Java类集-set

Set接口是Collection接口的子接口,Set接口中不能插入反复元素

Set接口的经常使用子类:

HashSetset接口的一个子类。特点:里面不能存放反复元素,并且採用散列的存储方式。所以没有顺序。

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() 三个方法

posted @ 2017-04-22 10:30  brucemengbm  阅读(105)  评论(0编辑  收藏  举报