1.HashSet javascript
java.util.HashSet類實現(xiàn)了Java.util.Set接口。java
它有以下特色:spa
1.它不容許出現(xiàn)重復元素;2.不保證集合中元素的順序3.容許包含值為null的元素,但最多只能有一個null元素。code
下面代碼是利用hashSet獲取不重復的一組groupId:xml
public static List getGroups(List resourceList) {Set set = new HashSet();for (Resource resource : resourceList) {if (StringUtils.isNotBlank(resource.groupIds)) {for (String groupId : StringUtils.split(resource.groupIds, “,”)) {if (StringUtils.isNotBlank(groupId)) {set.add(Long.parseLong(groupId));}}}}return new ArrayList(set);}
2.TreeSet
TreeSet是能夠實現(xiàn)排序等功能的集合,它在對象元素添加到集合中時會自動按照某種比較規(guī)則將其插入到有序的對象序列中;對象
TreeSet是如何對對象進行排序的捏?TreeSet支持 兩種排序方式:天然排序和客戶化排序,默認狀況下是天然排序.在JDK中,有一部分類實現(xiàn)了Comparable接口,如Integer,Double和String等,Comparable接口有一個compareTo(Object o)方法,它返回整數(shù)類型,對于表達式x.compareTo(y),若是返回值為0,表示x和y相等,若是返回值大于0,表示x大于y,若是小于0,表示x TreeSet調用對象的compareTo()方法比較集合中對象的大小,而后進行升序排序,這種方式稱為天然排序.客戶化排序:java.util.Comparator接口用于指定具體的排序方式,它有個compare(Object obj1,Object obj2),用于比較兩個對象的大小.當表達式compare(x,y)的值大于0,表示x大于y,小于0,表示x小于y,等于0,表示x等于y,若是想讓TreeSet進按照Customer對象的name屬性進行降序排列,能夠先建立實現(xiàn)Comparator接口的類CustomerComparator,如:import java.util.*;public class CustomerComparator implements Comparator{public int compare(Object o1,Object o2){Customer c1=(Custoemr)o1;Customer c2=(Customer)o2;if(c1.getName().compareTo(c2.getName())>0) return -1;if(c1.getName().compareTo(c2.getName())<0) return 1;return 0;} }接下來在構造TreeSet的實例時,調用它的TreeSet(Comparator comparator)構造方法Set set=new TreeSet(new CustomerComparator());Customer c1=new Customer("TOM",15);Customer c2=new Customer("JACK",20);Customer c3=new Customer("MIKE",38);set.add(c1);set.add(c2);set.add(c3);Iterator it=set.iterator();while(it.hasNext()) {Custoemr customer=(Customer)it.next();System.out.println(customer.getName()+"" +customer.getAge();)}當TreeSet向集合中加入Customer對象時,會調用CustomerComparator類的compare()方法進行排序,以上Tree按照Custoemr對象的name屬性進行降序排列,最后輸出為:TOM 15 MIKE 38 JACK 16