我有四个不同对象类型的列表。每个对象类型都有一个共同的元素:getTime()。
笔记:
- 列表是有序的,但可能不会从同一点开始。
- 列表可能不会在同一时间点开始。
对我来说,订购这 4 个对象以使每个元素“i”具有相同的 getTime() 值的最佳方法是什么?
如果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));
}
然后,对这个组合列表进行排序。迭代它,您将能够轻松获得具有相同时间值的元素。
您可以根据需要按时间对第一个列表进行排序。然后对于其他三个列表,您可以简单地遍历第一个列表,并同时在其他列表中找到对象。
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;
}
}
}