版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/84448904
TreeSet
自然排序
对于自定义类型,那么要实现自然排序,需要去 Comparable 接口中的 compareTo 方法。在 compare To 方法中我们可以根据自己的业务要求,来实现自己的排序规则。
定制排序
在创建容器的时候,给TreeSet创建一个比较器。
创建比较器的方式:三种
- 通过自定义的外部类来实现比较器。
- 通过在容器的定义类中,来通过内部类来实现一个比较器
- 在创建容器的时候,在创建的过程中,通过匿名内部类来创建一个比较器
三种方式相比较而言,3 更好一些(程序的可读性和维护性)。
package org.lanqiao.setDemo;
public class Student {
private String name;
private Integer age;
public Student() {
}
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
package org.lanqiao.setDemo;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class SetDemo {
public static void main(String[] args) {
Set set = new TreeSet(new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Student stu = (Student)o1;
Student stus = (Student)o2;
int res = stu.getAge().compareTo(stus.getAge());
if(res == 0 ) {
res = stu.getName().compareTo(stus.getName());
}
return res;
}
});
Student stu1 = new Student("张三",21);
Student stu2 = new Student("李四",18);
Student stu3 = new Student("王五",22);
Student stu4 = new Student("赵六",18);
set.add(stu1);
set.add(stu2);
set.add(stu3);
set.add(stu4);
// 使用迭代器对集合进行遍历
Iterator iter = set.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
System.out.println("-------------------");
// 使用增强for循环来进行集合的遍历 jdk1.5 新特性
/* for(遍历的集合中的每一个元素的类型 变量(标识符):遍历的对象(集合)) {
}
*/
for(Object obj :set) {//Object obj = Student
Student stu = (Student)obj;
System.out.println(stu.getName());
}
System.out.println("-------------------");
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
for(Object obj : list) {
System.out.println(obj);
}
System.out.println("-------------------");
int[] arr = {2,14,6,8,4,32};
for(int i :arr) {
System.out.println(i);
}
}
}