java.util.Collections類包含很多有用的方法,可以使程序員的工作變得更加容易,但是這些方法通常都沒(méi)有被充分地利用。這一篇文章將通過(guò)一些方法的范例化,使讀者了解這些方法帶來(lái)的方便。
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ī)列表的來(lái)源處,可以調(diào)用它的sibling方法:
shuffle(List list, Random random)
如果你需要建立一個(gè)不能更改的集合,可以使用unmodifiableCollection(Collection c)方法。這一方法包含sibling方法,sibling方法可以處理特定類型的Set, List, 和Map。對(duì)于Set和Map,你可以通過(guò)使用一些sorted方法來(lái)獲得結(jié)果對(duì)象的排序。
List newList = Collections.unmodifiableList(myList);
如果你是在編寫需要Enumeration對(duì)象操作方面的代碼,可以充分利用enumeration方法:
Enumeration e = Collections.enumeration(collection);
當(dāng)你想使用一個(gè)簡(jiǎn)單對(duì)象來(lái)代替多個(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)列表存在于其他列表中,這一方法將返回包含列表起始位置的索引。如果在列表中無(wú)法找到目標(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è)沒(méi)有元素的列表,但是當(dāng)可以避免建立對(duì)象的時(shí)候最好不要建立對(duì)象。