我有一個包含對象的ArrayList,這些對象有多個值。將ArrayList <Object>拆分爲多個,取決於對象中的int值
現在我想將這個列表分成多個列表,取決於對象中的一個int值。
因此,如果例如:
2對象有一個int值爲1
3對象有一個int與值3
所以該ArrayList有5個對象,我想獲得:
2周的ArrayLists,1與第一對象的連接1與第二對象(多個,如果有多個不同的INT的值)
很抱歉,如果它是混亂..
我有一個包含對象的ArrayList,這些對象有多個值。將ArrayList <Object>拆分爲多個,取決於對象中的int值
現在我想將這個列表分成多個列表,取決於對象中的一個int值。
因此,如果例如:
2對象有一個int值爲1
3對象有一個int與值3
所以該ArrayList有5個對象,我想獲得:
2周的ArrayLists,1與第一對象的連接1與第二對象(多個,如果有多個不同的INT的值)
很抱歉,如果它是混亂..
首先創建這樣一個緩存:Map<Integer, List<YourObjectType>>
然後通過每個對象的週期,並使用你的整數訪問上述Map
,如果該值爲空,創建一個新的List
並把它放在Map
,然後將您的對象添加到List
。
最終結果將是一個帶有兩個條目的映射,每個條目都包含一個條目列表,其中包含來自您的對象的整數作爲鑑別器。
下面的代碼:
Map<Integer, List<YourObject>> cache = new HashMap<Integer, List<YourObject>>();
for (YourObject yo : yourObjectListArrayWhatever) {
List<YourObject> list = cache.get(yo.getIntegerValue());
if (list == null) {
list = new ArrayList<YourObject>();
cache.put(yo.getIntegerValue(), list);
}
list.add(yo);
}
你如何存儲對象的int值?我確定你有一個派生自Object的實現,在這種情況下,你應該在層次結構的較低點使用generecity。
假設你有一類人用一個int值,然後子類人伸出Person和女人伸出人,你填入此ArrayList與男性和女性,你會做這樣像這樣:
List<Person> pList = new ArrayList<Person>();
現在,在你的Person類中你應該有一個int值的get方法。例如,如果int值是人的年齡:
public int getAge() { return age; }
然後,終於回答你的問題我會去像這樣:
List<Person> firstList = new ArrayList<Person>();
List<Person> secondList = new ArrayList<Person>();
for (Person person:pList) {
if (person.getAge()==1) {
firstList.add(person);
}
else if (person.getAge()==3) {
secondList.add(person);
}
}//for
我希望我充分地回答你的問題。
int值是可變的,從未知道前期 – Luc 2013-03-21 12:49:09
這樣做的訣竅:) – Luc 2013-03-21 12:46:26