机械配件东莞网站建设,一站式做网站公司,自己做h5制作开发,网站建设的知识和技能文章目录 1. TreeSet1.1. 自然排序1.2. 定制排序 1. TreeSet TreeSet 是 SortedSet 接口的实现类#xff0c; TreeSet 可以确保集合元素处于排序状态。 TreeSet 支持两种排序方法#xff1a;自然排序和定制排序。默认情况下#xff0c; TreeSet 采用自然排序。 1.1.… 文章目录 1. TreeSet1.1. 自然排序1.2. 定制排序 1. TreeSet TreeSet 是 SortedSet 接口的实现类 TreeSet 可以确保集合元素处于排序状态。 TreeSet 支持两种排序方法自然排序和定制排序。默认情况下 TreeSet 采用自然排序。 1.1. 自然排序 默认情况下 TreeSet 采用自然排序。自然排序 TreeSet 会调用集合元素的 compareTo(Object obj) 方法来比较元素之间的大小关系然后将集合元素按升序排列 • 如果 this obj, 返回正数 1 • 如果 this obj, 返回负数 -1 • 如果 this obj, 返回 0 则认为这两个对象相等 • 必须放入同样类的对象 ( 默认会进行排序 ) 否则可能会发生类型转换异常 可以使用泛型来进行限制。
举例
package day10;import java.util.Set;
import java.util.TreeSet;public class Test4 {public static void main(String[] args) {SetInteger set new TreeSetInteger();//TreeSet自然排序set.add(5);set.add(2);set.add(4);set.add(3);System.out.println(set);}
}运行结果 举例2实现其他功能
package day10;import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;public class Test4 {public static void main(String[] args) {SetInteger set new TreeSetInteger();set.add(5);set.add(2);set.add(4);set.add(3);System.out.println(set);set.remove(5);set.contains(3);
// set.clear();//清空集合//使用迭代器遍历集合IteratorInteger it set.iterator();while(it.hasNext()) {System.out.println(it.next());}//for each迭代集合推荐这种for(Integer i : set) {System.out.println(i);}}
}
1.2. 定制排序 如果需要实现定制排序则需要在创建 TreeSet 集合对象时提供一个 Comparator 接口的实现类对象。由该 Comparator对象负责集合元素的排序逻辑。
举例
package day10;import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;public class Test4 {public static void main(String[] args) {Person p1 new Person(张三, 23);Person p2 new Person(李四, 20);Person p3 new Person(王五, 16);Person p4 new Person(杨六, 29);SetPerson set new TreeSetPerson(new Person());set.add(p1);set.add(p2);set.add(p3);set.add(p4);//for each迭代集合for(Person p : set) {System.out.println(p.name p.age);}}
}class Person implements ComparatorPerson{//把person对象存到TreeSet中并按照年龄排序int age;String name;public Person() {}public Person(String name, int age) {this.name name;this.age age;}Overridepublic int compare(Person o1, Person o2) {//年龄正序排列if(o1.age o2.age) {return 1;}else if(o1.age o2.age) {return -1;}else {return 0;} }}运行结果