1.HashSet javascript
java.util.HashSet類實(shí)現(xiàn)了Java.util.Set接口。java
它有以下特色:spa
1.它不容許出現(xiàn)重復(fù)元素;2.不保證集合中元素的順序3.容許包含值為null的元素,但最多只能有一個(gè)null元素。code
下面代碼是利用hashSet獲取不重復(fù)的一組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是能夠?qū)崿F(xiàn)排序等功能的集合,它在對(duì)象元素添加到集合中時(shí)會(huì)自動(dòng)按照某種比較規(guī)則將其插入到有序的對(duì)象序列中;對(duì)象
TreeSet是如何對(duì)對(duì)象進(jìn)行排序的捏?TreeSet支持 兩種排序方式:天然排序和客戶化排序,默認(rèn)狀況下是天然排序.在JDK中,有一部分類實(shí)現(xiàn)了Comparable接口,如Integer,Double和String等,Comparable接口有一個(gè)compareTo(Object o)方法,它返回整數(shù)類型,對(duì)于表達(dá)式x.compareTo(y),若是返回值為0,表示x和y相等,若是返回值大于0,表示x大于y,若是小于0,表示x TreeSet調(diào)用對(duì)象的compareTo()方法比較集合中對(duì)象的大小,而后進(jìn)行升序排序,這種方式稱為天然排序.客戶化排序:java.util.Comparator接口用于指定具體的排序方式,它有個(gè)compare(Object obj1,Object obj2),用于比較兩個(gè)對(duì)象的大小.當(dāng)表達(dá)式compare(x,y)的值大于0,表示x大于y,小于0,表示x小于y,等于0,表示x等于y,若是想讓TreeSet進(jìn)按照Customer對(duì)象的name屬性進(jìn)行降序排列,能夠先建立實(shí)現(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;} }接下來(lái)在構(gòu)造TreeSet的實(shí)例時(shí),調(diào)用它的TreeSet(Comparator comparator)構(gòu)造方法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();)}當(dāng)TreeSet向集合中加入Customer對(duì)象時(shí),會(huì)調(diào)用CustomerComparator類的compare()方法進(jìn)行排序,以上Tree按照Custoemr對(duì)象的name屬性進(jìn)行降序排列,最后輸出為:TOM 15 MIKE 38 JACK 16