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

[个人博客搬运][Java]别写排序了,用TreeSet

2016-07-15 11:19 190 查看
从一本书看到,TreeSet是一个可以自动排序的集合.将数据或者对象添加进去后,会自动给我们排好序。虽然有类似的sort函数,但是用这个集合存储数据和整理数据都比较方便。

1.自带的默认排序算法排序,例如:

import java.util.TreeSet;

import org.junit.Test;

public class TestTreeSet {
@Test
public void testTreeSet() {
TreeSet<Integer> ts = new TreeSet<Integer>();

ts.add(10);
ts.add(6);
ts.add(8);
ts.add(7);

for (int i : ts) {
System.out.println(i);
}
}
}


JUnit测试结果正常,输出结果:

6
7
8
10

简直是那些说是懒得写快排其实是写不出快排的人比如说我的必备啊!

2.人工地自定义排序,需要实现Comparator接口。

举个最简单的例子,比如说写一个按照学生的学分绩给学生排序的程序。

先定义一个学生类:

package domain;

public class Student {

private String sname;            //student name
private int score;                    //student score

private String sno;                    //student number

public Student(String sname, int score, String sno) {
this.sname = sname;
this.score = score;
this.sno = sno;
}

public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}

public String toString() {
return this.sname + " " + this.sno +" "+ this.score;            //重写toString方法输出方便
}
}


再实现Comparator接口:

package domain;

public class Student {

private String sname;            //student name
private int score;                    //student score

private String sno;                    //student number

public Student(String sname, int score, String sno) {
this.sname = sname;
this.score = score;
this.sno = sno;
}

public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}

public String toString() {
return this.sname + " " + this.sno +" "+ this.score;            //重写toString方法输出方便
}
}


然后就可以加入集合,轻松愉快地跳过各种排序,直接输出就可以了:

package domain;

public class Student {

private String sname;            //student name
private int score;                    //student score

private String sno;                    //student number

public Student(String sname, int score, String sno) {
this.sname = sname;
this.score = score;
this.sno = sno;
}

public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}

public String toString() {
return this.sname + " " + this.sno +" "+ this.score;            //重写toString方法输出方便
}
}


输出结果:

1110330130 bbb 95
1110330160 eee 97
1110330140 ccc 98
1110330150 ddd 98
1110330116 aaa 100
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: