JAVA复习5(TreeSet)

Set 接口

 

特点: 最大的特点 就是集合中的元素 不可重复  其也是Collection接口的子接口 , Set本身也是一个接口,同样不能直接使用,需要实例化该接口的实现类 Set接口下面的实现类:

常用

1 TreeSet   有序 ,不可重复

 

public class TreeSet<E>
extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, Serializable

 

 

常用方法  来自Collection

 

 

范例: 观察TreeSet子类的使用

public static void main(String[] args) {

          Set<String> all=new TreeSet<>();

         

          all.add("B");

         

          all.add("C");

         

          all.add("A");

         

          all.add("C");  //重复元素

         

          for(String str:all) {

              

               System.out.println(str);

          }

     }

 

通过观察以上代码发现,TreeSet 存放的数据有以下两个特点:

 

1 有序   为什么有序?

 

TreeSet的排序是通过compreable 接口中的compareTo方法完成的 该方法返回 3个取值

 

分别为: 1 升序   - 1 降序   0 重复元素的判断

范例: 使用自定义类完成TreeSet

 

public static void main(String[] args) {

         

         

          Set<Person> all=new TreeSet<>();

         

          all.add(new Person("张三",32));

         

          all.add(new Person("李四",20));

         

          all.add(new Person("张三",32));

         

          all.add(new Person("隔壁老王",89));  //重复元素

         

          for(Person per:all) {

              

               System.out.println(per);

          }

     }

 

出错了以下的错误:

Exception in thread "main" java.lang.ClassCastException: org.list.Person cannot be cast to java.lang.Comparable

     at java.util.TreeMap.compare(Unknown Source)

     at java.util.TreeMap.put(Unknown Source)

     at java.util.TreeSet.add(Unknown Source)

     at org.set.TreeSetDemo.main(TreeSetDemo.java:15)

 

说明在TreeSet中进行保存的时候,约定存储的类型必须实现一个接口,而这个接口就是comparable接口,如果没有这个接口则不能实现排序功能

 

范例:实现compareTo方法

@Override

     public int compareTo(Person o) {

          // TODO Auto-generated method stub

          if(this.age>o.age) {

               return 1;

          }else if(this.age<o.age) {

               return -1;

          }

          return 0;

     }

 

 

 

 

2 不可重复

 重复元素的区分 在TreeSet中是依靠compareTo方法是否返回0来判断的

猜你喜欢

转载自blog.csdn.net/weixin_42923199/article/details/86674264