Set接口是Collection接口的子接口,Set接口中不能插入重復(fù)元素
Set接口的經(jīng)常使用子類:
HashSet是set接口的1個(gè)子類,特點(diǎn):里面不能寄存重復(fù)元素,而且采取散列的存儲(chǔ)方式,所以沒有順序。
Treeset也是set接口的1個(gè)子類,特點(diǎn):里面不能寄存重復(fù)元素,并且是有序寄存
TreeSet是有序寄存的,所以需要制定好排序規(guī)則,TreeSet中每一個(gè)對象所在的類都必須實(shí)現(xiàn)Compatable接口才可以正常使用;
packageleiji;
publicclass Person implements Comparable<Person> {
private String name;
private int age;
public Person (String name,int age){
this.name=name;
this.age=age;
}
public String toString(){ //覆寫toString方法
return"姓名:"+name+";年齡:"+age;
}
public int compareTo(Person per){ //覆寫compareTo方法
if(this.age>per.age){
return 1;
}
else if(this.age<per.age){
return ⑴;
}
else{
return this.name.compareTo(per.name) ;
}
}
}
packageleiji;
publicclass Personal {
private String name;
private int age;
public Personal (String name,int age){
this.name=name;
this.age=age;
}
public String toString(){ //覆寫toString方法
return"姓名:"+name+";年齡:"+age;
}
public boolean equals(Object obj){ //覆寫equals方法
if(this==obj){ //判斷是否是同1個(gè)對象
return true;
}
if (!(obj instanceofPersonal)){ //判斷是否是同1個(gè)類
return false;
}
Personalp=(Personal)obj; //進(jìn)行向下轉(zhuǎn)型
if(this.name.equals(p.name) && this.age==p.age){ //
return true;
}else{
return false;
}
}
public int hashCode(){ //覆寫hashCode函數(shù)
returnthis.name.hashCode()*this.age; //指定編碼格式
}
}
packageleiji;
importjava.util.Set;
importjava.util.HashSet;
importjava.util.TreeSet;
publicclass Sett {
public static void main(String args[]){
Set<String> allset=new HashSet<String>();
allset.add("A");
allset.add("M");
allset.add("D");
allset.add("F");
allset.add("F");
System.out.println(allset);
Set<String> sortset=new TreeSet<String>();
sortset.add("F");
sortset.add("M");
sortset.add("A");
sortset.add("d");
System.out.println(sortset);
//應(yīng)用自定義的類對象作為元素
Set<Person> alls=new TreeSet<Person>();
alls.add(new Person("張3",30));
alls.add(new Person("張3",32));
alls.add(new Person("張3",30));
alls.add(new Person("李4",30));
System.out.println(alls);
//應(yīng)用自定義類Personal作為元素 實(shí)現(xiàn)HashSet去重功能
Set<Personal> allse=new HashSet<Personal>();
allse.add(new Personal("張3",30));
allse.add(new Personal("李4",30));
allse.add(new Personal("張3",30));
allse.add(new Personal("趙6",30));
allse.add(new Personal("徐崢",30));
System.out.println(allse);
}
}
//1個(gè)好的object類最好覆寫Object類的HashCode() equals() toString() 3個(gè)方法