Set系列集合(理论)

104 阅读1分钟

Set系列集合特点 1、无序:存取顺序不一定 2、不重复:可以去重复 3、无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素

Set系列集合实现类特点 HashSet:无序、不重复、无索引 linkedHashSet:有序、不重复、无索引 TreeSet:排序、不重复、无所引 Set系列集合的功能基本上与Collection的API一致

微信图片_20220726103139.jpg

微信图片_20220726103240.jpg

微信图片_20220726103329.jpg 如果希望集合把你的重复对象内容去掉,需要重写hashCode方法和equals方法,可以自动生成

TreeSet集合特点 1、不重复、无索引、可排序 2、可排序:可以按照元素的大小默认升序(从小到大)排序 3、TreeSet集合底层是基于红黑树的数据结构进行排序的,增删改查性能都较好 注意:TreeSet集合是一定要排序的,可以将元素按照指定规则进行排序

微信图片_20220726104056.jpg

    //@Override 方法一:继承Compare接口,重写compareTo方法
//    public int compareTo(People o) {
//        return this.age-o.age >= 0 ? 1 : -1;//自定比较规则 用三元运算符保留年龄重复的对象
//    }
  //方法二:new比较器对象 推荐使用方法二
  //对小数进行比较可以使用Double.compare
// Set<People> peoples = new TreeSet<> (( o1, o2)-> Double.compare(o2.getHeight(), o1.getHeight())>= 0 ? 1 : -1);

  Set<People> peoples = new TreeSet<> (( o1, o2)-> o1.getAge()- o2.getAge()>= 0 ? 1 : -1);//对整数进行比较 用三元运算符保留年龄相同的对象
 // Set<People> set = new TreeSet<>();
  peoples.add(new People("张三",28,155.6));
  peoples.add(new People("李四",30,160.8));
  peoples.add(new People("王五",30,176.5));
  peoples.add(new People("王麻子",20,155.6));
  System.out.println(peoples);
  Collection<People> list = new LinkedList<>();

List集合与Set集合总结

微信图片_20220726105729.jpg