我有四个不同对象类型的列表。每个对象类型共享一个公共元素:getTime()。
注意:
我订购这4个对象的最佳方式是什么,以便每个元素“i”具有相同的getTime()值?
答案 0 :(得分: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));
}
然后,对此组合列表进行排序。迭代它,你将能够轻松地获得具有相同时间值的元素。
答案 1 :(得分:-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;
}
}
}