您的位置:首页 > 编程语言 > Java开发

JavaSE 学习参考:TreeSet

2017-04-18 00:00 351 查看




TreeSet类内部采用的二叉树数据结构,默认使用元素的自然排序接口Comparable对元素进行排序,也可以在构造时指定排序器Comparator来指定排序规则。

例如若将自定义Student类的对象放置到TreeSet中,按照姓名字典顺序排序,可以采用两种方式实现。

Comparable接口

让Student类实现Comparable接口,重写compareTo(Student)方法,在方法定义排序规则。

Comparator接口

定义排序器类实现Comparator接口,重写compare(Student s1,Student s2)方法,在方法定义排序规则,在构造TreeSet实例时传入排序器类实例。。

示例:
class Student implements Comparable<Student>{
private String name;
private int age;
private double score;
public Student(String name, int age, double score) {
super();
this.name = name;
this.age = age;
this.score = score;
}

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;
}

public double getScore() {
return score;
}

public void setScore(double score) {
this.score = score;
}

@Override
public int compareTo(Student s) {
return 0;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", score=" + score + "]";
}
}

class StudentScoreComparator implements Comparator<Student>{
@Override
public int compare(Student s1, Student s2) {

return (int)(s1.getScore()*100-s2.getScore()*100)/100;
}
}
public class Test {
public static void main(String[] args) {
Set<String> set=new HashSet<String>();
set.add("Tom");
set.add("Alice");
set.add("Martin");
set.add("Jerry");
Iterator<String> it=set.iterator();
while(it.hasNext()){
String city=it.next();
System.out.println(city);
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Set List HashSet TreeSet