有这样一组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那么就能得到1,2,4
如果知道了2,那么我要知道2对应的3;
要求的是知道了1和2 怎么知道他们所对应的数字,如果有数据库当然好办了 select * from 【table】 where lot=** 就可以知道他所对应的pp信息,但是现在是利用java实现,不能插入临时表。
谢谢
改成HashMap多好
lot的值为map键
pp的值为map值
List<Obj> list = new ArrayList<Obj>();
//填充数据....
for(Obj o : list){
if(o.getLot()==1){
//把对应的pp找出来处理
}
...
}
========================================
有1对多的关系,map不行。把你的 数据封装成一个类 ,例如Obj ,有2个属性,lot,pp
List<Obj> list = new ArrayList<Obj>();
//填充数据....
for(Obj o : list){
if(o.getLot()==1){
//把对应的pp找出来处理
}
...
}
=========================================================================这样写的话,如果能判断他能不重复呢? 这个1不能泛泛的写死啊。我还没想懂。。
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;
}
}
System.out.println("i="+i+" -> pp="+o.getPp());
在这里你就可以把取到的值封装成Map<int,List<int>> map = new HashMap<int,List<int>>();就行了