我有四個不同對象類型的列表。每個對象類型共享一個公共元素:getTime()。通用公共元素對多個對象排序
注:
- 列表是爲了,但在同一點可能無法啓動。
- 列表可能不會在同一時間點開始。
什麼是我訂購這4個對象的最佳方式,使每個元素「i」對於getTime()具有相同的值?
我有四個不同對象類型的列表。每個對象類型共享一個公共元素: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;
}
}
}
最好的方法是什麼?所以你已經實現了我猜測一個Collections.sort與比較getTime? – arynaq
你的問題不清楚。給定兩個具有時間值的列表:a = [1,3,5]和b = [2,3,4],結果如何?我的猜測是:a'= [1,null,3,null,5]和b'= [null,2,3,4,null]。它是否正確? –