充分利用java.util.Collections類
Posted on 2006-05-24 23:30 ☆藍(lán)色夢(mèng)想☆ 閱讀(536) 評(píng)論(0) 編輯 收藏 所屬分類: J2SE![]() |
![]() |
Javadoc給出Collections類最完整的描述:“這一個(gè)類包含可以操作或返回集合的專用靜態(tài)類。”
使用copy方法可以將一個(gè)java.util.List復(fù)制到其他:
Collections.copy(newList, sourceList);
如果你需要使一個(gè)列表隨機(jī)化,可以調(diào)用shuffle方法:
shuffle(list);
這一方法可以記錄列表中的內(nèi)容。如果你想返回隨機(jī)列表的來源處,可以調(diào)用它的sibling方法:
shuffle(List list, Random random)
如果你需要建立一個(gè)不能更改的集合,可以使用unmodifiableCollection(Collection c)方法。這一方法包含sibling方法,sibling方法可以處理特定類型的Set, List, 和Map。對(duì)于Set和Map,你可以通過使用一些sorted方法來獲得結(jié)果對(duì)象的排序。
List newList = Collections.unmodifiableList(myList);
如果你是在編寫需要Enumeration對(duì)象操作方面的代碼,可以充分利用enumeration方法:
Enumeration e = Collections.enumeration(collection);
當(dāng)你想使用一個(gè)簡單對(duì)象來代替多個(gè)對(duì)象的時(shí)候,請(qǐng)使用fill(List list, Object obj)方法。
其他的,當(dāng)你需要具有相同對(duì)象的多個(gè)引用的列表時(shí),可以使用nCopies(int n, Object o)方法。
當(dāng)你需要在其他列表中查找一個(gè)列表的位置時(shí),請(qǐng)使用indexOfSubList(List source, List target)或者lastIndexOfSubList(List source, List target)方法。如果目標(biāo)列表存在于其他列表中,這一方法將返回包含列表起始位置的索引。如果在列表中無法找到目標(biāo)列表,這兩種方法都返回-1。
如果你需要使一個(gè)列表的排序相反化(反序),則可以調(diào)用reverse方法,這一方法可以使列表現(xiàn)有元素的序號(hào)重新排序。
正如你所看到的,collections類包含很多方法。也許你很少使用到某些方法,但你可以會(huì)經(jīng)常使用到其中的一些。
同樣,也存在三種空的集合域。EMPTY_LIST, EMPTY_MAP, 和EMPTY_SET可以幫助你避免不必要的對(duì)象生成,特別是當(dāng)返回?cái)?shù)據(jù)的空集合的時(shí)候。例如:
public List getData(Criteria c) {
??...
??
??if ( noData ) {
??????return Collections.EMPTY_LIST;
??}
??
??// otherwise
??// gather and return data
??...?
}
你可以建立一個(gè)沒有元素的列表,但是當(dāng)可以避免建立對(duì)象的時(shí)候最好不要建立對(duì)象。