如何实现如下效果:
有两个arraylist,分别为ary1和ary2,
ary1里有不定个对象,每个对象有两个属性,分别是id(这个是唯一的)和 长度(这个不是唯一的) 这个属性。
ary2里有不定个对象,每个对象有两个属性,分别是id(这个是唯一的)和 长度(这个不是唯一的) 这个属性。合并ary1和ary2为类型为ArrayList的对象ary3
如果id的值是相同的就把“长度”加起来,合并为一个对象发入ary3里 
不相同的也放入ary3里
就是说,ary3里的id不能重复

解决方案 »

  1.   

    设置一个Map对象
    把ary1中的对象读取取来,把id做为map的key,把长度做为map的值,
    再把ary2中的对象做同样的操作
    同时判断if(map.get(key)==null){
       //增加
    }else{
      //值相加
    }
    然后返回对象到ary3中
      

  2.   

    没啥事,帮楼主瞎弄了一个
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.util.HashMap;
    import java.util.Iterator;public class MergeListTest{

    public static List MergeList(List l1, List l2){
    if(l1 == null || l2 == null){
    return null;
    }

    Map total = new HashMap();

    Iterator it1 = l1.iterator();
    while(it1.hasNext()){
    Demo temp = (Demo) it1.next();
    total.put(temp.getId(), temp);
    }

    Iterator it2 = l2.iterator();
    while(it2.hasNext()){
    Demo temp = (Demo) it2.next();
    if(total.containsKey(temp.getId())){
    Demo temp1 = (Demo)total.get(temp.getId());
    temp1.setLength(temp1.getLength() + temp.getLength());
    }else{
    total.put(temp.getId(), temp);
    }
    }
    return new ArrayList(total.values());
    }
    public static void main(String[] args){
    List l1 = new ArrayList();
    List l2 = new ArrayList();

    Demo d1 = new Demo("001", 1.1f);
    Demo d2 = new Demo("002", 2.2f);
    Demo d3 = new Demo("003", 3.3f);

    Demo d4 = new Demo("004", 4.4f);
    Demo d5 = new Demo("001", 1.5f);

    l1.add(d1);
    l1.add(d2);
    l1.add(d3);

    l2.add(d5);
    l2.add(d4);

    List total = MergeList(l1, l2);

    System.out.println(total);
    }
    }class Demo{
    private String id;
    private float length;

    public Demo(){
    id = "";
    length = 0f;
    }
    public Demo(String id, float length){
    this.id = id;
    this.length = length;
    }
    public void setId(String id){
    this.id = id;
    }
    public void setLength(float length){
    this.length = length;
    }
    public String getId(){
    return this.id;
    }
    public float getLength(){
    return this.length;
    }
    public String toString(){
    return "(id:" + this.id + "|length:" + this.length + ")";
    }
    }
      

  3.   

    复写equals()方法,程序是不是会显的优雅些?