Java类集-set
Set接口是Collection接口的子接口,Set接口中不能插入重復元素
Set接口的常用子類:
HashSet是set接口的一個子類,特點:里面不能存放重復元素,而且采用散列的存儲方式,所以沒有順序。
Treeset也是set接口的一個子類,特點:里面不能存放重復元素,并且是有序存放
?
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 -1;
??????????? }
??????????? 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){????????? //判斷是不是同一個對象
???????????????????return true;
??????????? }
??????????? if (!(obj instanceofPersonal)){ //判斷是不是同一個類
???????????????????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("張三",30));
alls.add(new Person("張三",32));
alls.add(new Person("張三",30));
alls.add(new Person("李四",30));
System.out.println(alls);
?
//運用自定義類Personal作為元素 實現HashSet去重功能
Set<Personal> allse=new HashSet<Personal>();
allse.add(new Personal("張三",30));
allse.add(new Personal("李四",30));
allse.add(new Personal("張三",30));
allse.add(new Personal("趙六",30));
allse.add(new Personal("徐崢",30));
System.out.println(allse);
}
}
?
//一個好的object類最好覆寫Object類的HashCode() equals()?toString() 三個方法
總結
以上是生活随笔為你收集整理的Java类集-set的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java类集-list
- 下一篇: Java类集-SortedSet接口