程序员人生 网站导航

Java类集-set

栏目:互联网时间:2014-11-07 09:08:54

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

Set接口的经常使用子类:

HashSetset接口的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个方法

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐