当前位置: 代码迷 >> J2EE >> 1个 List 归拢相同
  详细解决方案

1个 List 归拢相同

热度:340   发布时间:2016-04-19 22:00:29.0
1个 List 合并相同
实在想不出来了...
求给位大神帮忙解答...


//假设 Pc 是对象, 对象有属性 ID,NAME
//假设 getPcList()这个方法获取了 List <Pc> 的集合
List <Pc> list = getPcList();

// 重点: 循环 list 得到数据 一个()代表一条数据 (12138,a),(12139,b),(12140,c),(12138,d),(12139,e),(12138,f),(12138,g)
// 重点:  请大神们把数据封装成这样 12138(a,d,f,g),12139(b,e),12140(c)

// 最好写成方法 ,注意数据最好拼成的格式...

求各位大神帮忙~~~
很急啊...
------解决方案--------------------
创建一个Map<Integer,List<String>>


List <Pc> list = getPcList();

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

for(Pc pc:list){//循环读取list内数据
if(null == pc) continue;
Integer id = pc.getID();
String name = pc.getName();
List<String> nameList = map.get(id);//获取id对应的name列表
if(null == nameList){//没有name列表则创建,放入map
nameList = new ArrayList<Integer,String>();
map.put(id,nameList);
}
nameList.add(name);//将name加入name列表
}

}
------解决方案--------------------

    List <Pc> list = getPcList();
    Map<Integer,List<String> hashMap = new HashMap<Integer,List<String>>();
    for(Pc p:list){
        //判断p是否为空
        if(p == null){
             continue;
        }
        Integer id = pc.getID();
       String name = pc.getName();
       List<String> values = new List<String>();
       //判断map中是否存在该key
       if(hashMap.containsKey(id)){
            values = hashMap.get(id);
       }
            //不管是否存在,都需要将name加到list中。
            //如果存在,则会替换掉存在的,如果不存在则会添加一个新的
            values.add(p.getName());
            hashMap.put(id,values);
    }      

------解决方案--------------------
List<Pc> list = getPcList();
for(int i=list.size()-1;i>=1;i--){
for(int j=i-1;j>=0;j--){
if(list.get(i).getId().equals(list.get(j).getId())){
//ID相同,移除改对象。跳出循环。
list.remove(j);
break;
}
}
}

应该可以用。
------解决方案--------------------
不好意思,没有仔细看你的功能,二楼的应该可以。
------解决方案--------------------
map 是最常见的解决这样的问题。
  相关解决方案