zoukankan      html  css  js  c++  java
  • 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() 三个方法

  • 相关阅读:
    Game Engine Architecture 3
    Game Engine Architecture 2
    补码
    工厂模式
    Game Engine Architecture 1
    YDWE Keynote
    3D Math Keynote 4
    3D Math Keynote 3
    3D Math Keynote 2
    OGRE中Any 类型的实现
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6747074.html
Copyright © 2011-2022 走看看