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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值