-2

我有四个不同对象类型的列表。每个对象类型都有一个共同的元素:getTime()。

笔记:

  1. 列表是有序的,但可能不会从同一点开始。
  2. 列表可能不会在同一时间点开始。

对我来说,订购这 4 个对象以使每个元素“i”具有相同的 getTime() 值的最佳方法是什么?

4

2 回答 2

0

如果getTime()您使用相同元素的意思是交叉引用列表以匹配具有相同时间的元素...

我会用 2 个方法创建一个包装类,getTime()并且getValue()

public class TimeElement{ 
    final long time;
    final Object value;
    TimeElement(long time, Object value){
        this.time = time;
        this.value = value;
    }    
    public long getTime(){return time;}
    public Object getValue(){return value;}
}

然后,通过添加每个列表的内容来创建一个大列表。

List<TimeElement> list = new ArrayList<TimeElement>();
for(int i=0;i<list1.size();i++){
    list.add(new TimeElement(list1.get(i).getTime(), list1.get(i));
}

然后,对这个组合列表进行排序。迭代它,您将能够轻松获得具有相同时间值的元素。

于 2013-08-05T18:04:26.627 回答
-1

您可以根据需要按时间对第一个列表进行排序。然后对于其他三个列表,您可以简单地遍历第一个列表,并同时在其他列表中找到对象。

for (Object1 o : list1) {
    for(Object2 o2 : list2) {
        if ((o2.getTime()).equals(o.getTime())) {
            newList2.add(o2);
            break;
        }
    }
    for(Object3 o3 : list3) {
        if ((o3.getTime()).equals(o.getTime())) {
            newList3.add(o3);
            break;
        }
    }
    for(Object4 o4 : list4) {
        if ((o4.getTime()).equals(o.getTime())) {
            newList2.add(o4);
            break;
        }
    }
}
于 2013-08-05T17:57:01.610 回答