TreeSet集合排序两种实现方式Comparable和Comparator比较
2017-08-04 11:54
435 查看
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
/**
* TreeSet集合排序有两种方式,Comparable和Comparator区别:
* 1:让元素自身具备比较性,需要元素对象实现Comparable接口,覆盖compareTo方法。
* 2:让集合自身具备比较性,需要定义一个实现了Comparator接口的比较器,并覆盖compare方法,
* 并将该类对象作为实际参数传递给TreeSet集合的构造函数。 第二种方式较为灵活。
*/
public class TreeSetDemo3 {
public static void main(String[] args) {
Teacher t1 = new Teacher(111L);
Teacher t2 = new Teacher(222L);
TreeSet<Teacher> teachers = new TreeSet<Teacher>();
teachers.add(t1);
teachers.add(t2);
for (Iterator<Teacher> iter = teachers.iterator(); iter.hasNext();) {
Teacher t = iter.next();
System.out.println(t.getId());
}
System.out.println("------------------------");
Student s1 = new Student(123L);
Student s2 = new Student(456L); //让集合自身具备比较性,这种方式较灵活
TreeSet<Student> students = new TreeSet<Student>(new StudentComparator());
students.add(s1);
students.add(s2);
for (Iterator<Student> iter = students.iterator(); iter.hasNext();) {
Student s = iter.next();
System.out.println(s.getId());
}
}
}
/**
* 采用实现Comparable接口重写compareTo方法的方式,让元素自身具备比较性
* @author Administrator
*
*/
class Teacher implements Comparable<Teacher>{
private Long id;
public Teacher() {
}
public Teacher(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public int compareTo(Teacher o) {
return (int) (this.id - o.getId());
}
}
//学生类
class Student {
private Long id;
public Student() {
}
public Student(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
/**
* 自定义定义一个实现了Comparator接口的比较器,并覆盖compare方法
*/
class StudentComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return (int) (o1.getId() - o2.getId()); // 根据升序排序
}
}
import java.util.Iterator;
import java.util.TreeSet;
/**
* TreeSet集合排序有两种方式,Comparable和Comparator区别:
* 1:让元素自身具备比较性,需要元素对象实现Comparable接口,覆盖compareTo方法。
* 2:让集合自身具备比较性,需要定义一个实现了Comparator接口的比较器,并覆盖compare方法,
* 并将该类对象作为实际参数传递给TreeSet集合的构造函数。 第二种方式较为灵活。
*/
public class TreeSetDemo3 {
public static void main(String[] args) {
Teacher t1 = new Teacher(111L);
Teacher t2 = new Teacher(222L);
TreeSet<Teacher> teachers = new TreeSet<Teacher>();
teachers.add(t1);
teachers.add(t2);
for (Iterator<Teacher> iter = teachers.iterator(); iter.hasNext();) {
Teacher t = iter.next();
System.out.println(t.getId());
}
System.out.println("------------------------");
Student s1 = new Student(123L);
Student s2 = new Student(456L); //让集合自身具备比较性,这种方式较灵活
TreeSet<Student> students = new TreeSet<Student>(new StudentComparator());
students.add(s1);
students.add(s2);
for (Iterator<Student> iter = students.iterator(); iter.hasNext();) {
Student s = iter.next();
System.out.println(s.getId());
}
}
}
/**
* 采用实现Comparable接口重写compareTo方法的方式,让元素自身具备比较性
* @author Administrator
*
*/
class Teacher implements Comparable<Teacher>{
private Long id;
public Teacher() {
}
public Teacher(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public int compareTo(Teacher o) {
return (int) (this.id - o.getId());
}
}
//学生类
class Student {
private Long id;
public Student() {
}
public Student(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
/**
* 自定义定义一个实现了Comparator接口的比较器,并覆盖compare方法
*/
class StudentComparator implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
return (int) (o1.getId() - o2.getId()); // 根据升序排序
}
}
相关文章推荐
- TreeSet集合排序两种实现方式Comparable和Comparator比较
- TreeSet集合排序两种实现方式Comparable和Comparator比较
- TreeSet的排序两种实现方式Comparator和Comparable
- TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式
- java排序中用到的两种比较方式:Comparable,Comparator
- (68)TreeSet练习:两种排序方式:自然排序(实现comparable接口)、比较器
- Java编程之TreeSet排序两种解决方法(1)元素自身具备比较功能,元素需要实现Comparable接口覆盖compare(2)创建根据自定义Person类的name进行排序的Comparator
- JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
- 集合框架-二叉树-实现Comparator方式排序
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- java集合中对象某属性比较排序Comparable与Comparator
- 实现TreeSet定制排序两种方式
- java中对集合或数组进行排序有两种方法:Comparable 与 Comparator
- java集合中对象某属性比较排序Comparable与Comparator
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- set集合 HashSet: TreeSet实现Comparable接口,覆盖compareTo方法。 类实现Comparator接口,覆盖compare方法。
- java集合TreeSet的两种排序方式