Set系列集合特点 1、无序:存取顺序不一定 2、不重复:可以去重复 3、无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素
Set系列集合实现类特点 HashSet:无序、不重复、无索引 linkedHashSet:有序、不重复、无索引 TreeSet:排序、不重复、无所引 Set系列集合的功能基本上与Collection的API一致
如果希望集合把你的重复对象内容去掉,需要重写hashCode方法和equals方法,可以自动生成
TreeSet集合特点 1、不重复、无索引、可排序 2、可排序:可以按照元素的大小默认升序(从小到大)排序 3、TreeSet集合底层是基于红黑树的数据结构进行排序的,增删改查性能都较好 注意:TreeSet集合是一定要排序的,可以将元素按照指定规则进行排序
//@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集合总结