Set接口是Collection接口的子接口,Set接口中不能插入重复元素
Set接口的经常使用子类:
HashSet是set接口的1个子类,特点:里面不能寄存重复元素,而且采取散列的存储方式,所以没有顺序。
Treeset也是set接口的1个子类,特点:里面不能寄存重复元素,并且是有序寄存
TreeSet是有序寄存的,所以需要制定好排序规则,TreeSet中每一个对象所在的类都必须实现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个对象
return true;
}
if (!(obj instanceofPersonal)){ //判断是否是同1个类
return false;
}
Personalp=(Personal)obj; //进行向下转型
if(this.name.equals(p.name) && this.age==p.age){ //
return true;
}else{
return false;
}
}
public int hashCode(){ //覆写hashCode函数
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);
//应用自定义的类对象作为元素
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);
//应用自定义类Personal作为元素 实现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个好的object类最好覆写Object类的HashCode() equals() toString() 3个方法