java.util.Collections類包含很多有用的方法,可以使程序員的工作變得更加容易,但是這些方法通常都沒有被充分地利用。這一篇文章將通過一些方法的范例化,使讀者了解這些方法帶來的方便。
Javadoc給出Collections類最完整的描述:“這一個類包含可以操作或返回集合的專用靜態類。”
使用copy方法可以將一個java.util.List復制到其他:
Collections.copy(newList, sourceList);
如果你需要使一個列表隨機化,可以調用shuffle方法:
shuffle(list);
這一方法可以記錄列表中的內容。如果你想返回隨機列表的來源處,可以調用它的sibling方法:
shuffle(List list, Random random)
如果你需要建立一個不能更改的集合,可以使用unmodifiableCollection(Collection c)方法。這一方法包含sibling方法,sibling方法可以處理特定類型的Set, List, 和Map。對于Set和Map,你可以通過使用一些sorted方法來獲得結果對象的排序。
List newList = Collections.unmodifiableList(myList);
如果你是在編寫需要Enumeration對象操作方面的代碼,可以充分利用enumeration方法:
Enumeration e = Collections.enumeration(collection);
當你想使用一個簡單對象來代替多個對象的時候,請使用fill(List list, Object obj)方法。
其他的,當你需要具有相同對象的多個引用的列表時,可以使用nCopies(int n, Object o)方法。
當你需要在其他列表中查找一個列表的位置時,請使用indexOfSubList(List source, List target)或者lastIndexOfSubList(List source, List target)方法。如果目標列表存在于其他列表中,這一方法將返回包含列表起始位置的索引。如果在列表中無法找到目標列表,這兩種方法都返回-1。
如果你需要使一個列表的排序相反化(反序),則可以調用reverse方法,這一方法可以使列表現有元素的序號重新排序。
正如你所看到的,collections類包含很多方法。也許你很少使用到某些方法,但你可以會經常使用到其中的一些。
同樣,也存在三種空的集合域。EMPTY_LIST, EMPTY_MAP, 和EMPTY_SET可以幫助你避免不必要的對象生成,特別是當返回數據的空集合的時候。例如:
public List getData(Criteria c) {
??...
??
??if ( noData ) {
??????return Collections.EMPTY_LIST;
??}
??
??// otherwise
??// gather and return data
??...?
}
你可以建立一個沒有元素的列表,但是當可以避免建立對象的時候最好不要建立對象。