赞
踩
存储结构:红黑树
基于排列顺序实现元素不重复
实现了SortedSet接口,对集合元素自动排序
元素对象的类型必须实现Comparable接口,指定排序规则
通过CompareTo方法确定是否为重复元素
package set; import java.util.TreeSet; public class TreeSetDemo { public static void main(String[] args) { TreeSet<String> tree = new TreeSet<String>(); tree.add("a"); tree.add("b"); tree.add("c"); tree.add("abc"); System.out.println(tree.size()); tree.forEach(System.out::println); System.out.println("---------------"); System.out.println(tree.toString()); tree.remove("b"); System.out.println("-------------"); tree.forEach(System.out::println); } }
为了将自定义类添加进TreeSet我们需要这样做
package set.entity; public class Person implements Comparable<Person> { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public int compareTo(Person o) { //比较结果:若比较结果相同则为0,不同则返回字典比较差值 int nameComp = this.getName().compareTo(o.getName()); int ageComp = this.getAge() - o.getAge(); System.out.println(".........."); System.out.println(nameComp); return nameComp == 0 ? ageComp : nameComp; } }
package set; import set.entity.Person; import java.util.TreeSet; public class TreeSetDemo2 { public static void main(String[] args) { TreeSet<Person> tree = new TreeSet<>(); tree.add(new Person("zhangsan",10)); tree.add(new Person("wangqiang",18)); tree.add(new Person("lisi",15)); tree.forEach(System.out::println); } }
package set; import set.entity.Person; import java.util.Comparator; import java.util.TreeSet; public class TreeSetDemo3 { public static void main(String[] args) { TreeSet<Person> tree = new TreeSet<>(new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { int nameCom = o1.getName().compareTo(o2.getName()); int ageCom = o1.getAge() - o2.getAge(); return nameCom == 0 ? ageCom : nameCom; } }); tree.add(new Person("zhangsan",10)); tree.add(new Person("wangqiang",18)); tree.add(new Person("lisi",15)); tree.forEach(System.out::println); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。