有这样一组list数据{lot=1;pp=2},{lot=2,pp=3},{lot=1;pp=4},{lot=1,pp=1} 怎么样求各lot对应的pp,用java解决
(只是假设)要的结果 是如果知道了1那么就能得到1,2,4
如果知道了2,那么我要知道2对应的3;
要求的是知道了1和2 怎么知道他们所对应的数字,如果有数据库当然好办了 select * from 【table】 where lot=** 就可以知道他所对应的pp信息,但是现在是利用java实现,不能插入临时表。
谢谢

解决方案 »

  1.   

    为啥用List呢?
    改成HashMap多好
      

  2.   

    map?
    lot的值为map键
    pp的值为map值
      

  3.   

    map? map可以 1个key 塞进多个value? 难道知道了一个key 就能知道多个value了?
      

  4.   

    有1对多的关系,map不行。把你的 数据封装成一个类 ,例如Obj ,有2个属性,lot,pp
    List<Obj> list = new ArrayList<Obj>();
    //填充数据....
    for(Obj o : list){
       if(o.getLot()==1){
          //把对应的pp找出来处理
       }
       ...
    }
      

  5.   

    map 不行 map 键值对关系是 0到1个 不能对应多个
      

  6.   

    值又不一定要求你是一个int或者String,自己再封装成数组、集合、对象或者什么都好,反正MAP的要求又不限制值的类型
      

  7.   

    而且像 lot 和 pp 都是未知的 不一定就像我所说的 1和2 这样简单
      

  8.   

    而且像 lot 和 pp 都是未知的 不一定就像我所说的 1和2 这样简单
      

  9.   

    而且像 lot 和 pp 都是未知的 不一定就像我所说的 1和2 这样简单
      

  10.   

    Map<int,List<int>> map = new HashMap<int,List<int>>();
      

  11.   

    当然最后的结果是 List<Map>,{key=1,value={1,2,4}},{key=2,value={3}}。。我想要的是上面的结果是如何处理的谢谢 
    ========================================
    有1对多的关系,map不行。把你的 数据封装成一个类 ,例如Obj ,有2个属性,lot,pp
    List<Obj> list = new ArrayList<Obj>();
    //填充数据....
    for(Obj o : list){
      if(o.getLot()==1){
      //把对应的pp找出来处理
      }
      ...
    }
    =========================================================================这样写的话,如果能判断他能不重复呢?  这个1不能泛泛的写死啊。我还没想懂。。
      

  12.   

    写了一个更通用的:import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;public class Test{    public static void main(String[] args) {
            List<Obj> list = new ArrayList<Obj>();
            list.add(new Obj(1,1));
            list.add(new Obj(1,2));
            list.add(new Obj(1,3));
            list.add(new Obj(2,2));
            list.add(new Obj(3,3));
            Set<Integer> set = new HashSet<Integer>();
            // 把所有的lot放到一个set中
            for(Obj o:list){
                set.add(o.lot);
            }
            System.out.println(set);
            for(Integer i:set){
                for(Obj o:list){
                    if(i==o.getLot()){
                        //根据你的需要去处理
                        System.out.println("i="+i+" -> pp="+o.getPp());
                    }
                }
            }
        }
        
        
    }
    class Obj{
        
        public Obj(int lot,int pp){
            this.lot = lot;
            this.pp = pp;
        }
        int lot;
        int pp;
        
        public int getLot() {
            return lot;
        }
        
        public void setLot(int lot) {
            this.lot = lot;
        }
        
        public int getPp() {
            return pp;
        }
        
        public void setPp(int pp) {
            this.pp = pp;
        }
    }
      

  13.   

     //根据你的需要去处理
    System.out.println("i="+i+" -> pp="+o.getPp());
    在这里你就可以把取到的值封装成Map<int,List<int>> map = new HashMap<int,List<int>>();就行了