[个人博客搬运][Java]别写排序了,用TreeSet
2016-07-15 11:19
190 查看
从一本书看到,TreeSet是一个可以自动排序的集合.将数据或者对象添加进去后,会自动给我们排好序。虽然有类似的sort函数,但是用这个集合存储数据和整理数据都比较方便。
1.自带的默认排序算法排序,例如:
JUnit测试结果正常,输出结果:
6
7
8
10
简直是那些说是懒得写快排其实是写不出快排的人比如说我的必备啊!
2.人工地自定义排序,需要实现Comparator接口。
举个最简单的例子,比如说写一个按照学生的学分绩给学生排序的程序。
先定义一个学生类:
再实现Comparator接口:
然后就可以加入集合,轻松愉快地跳过各种排序,直接输出就可以了:
输出结果:
1110330130 bbb 95
1110330160 eee 97
1110330140 ccc 98
1110330150 ddd 98
1110330116 aaa 100
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
相关文章推荐
- springmvc配置文件
- java正则表达式文档
- Java文件操作(四)
- Java基本概念(1)什么是Java
- spring配置文件
- Spring事务
- Spring整合activemq,实现单消费者消费
- Java正则表达式应用总结
- Spring aop +自定义annotation
- java poi导出excel,合并单元格
- Eclipse离线安装Activiti-Designer插件
- SpringMVC GET请求时中文乱码的问题
- java中用SAX解析XML
- Java集合中List的用法
- Windows下多版本Java并存问题
- spring boot
- 如何实现 Spring MVC i18n 国际化,动态设置默认语言
- java.lang.ClassNotFoundException: Cannot find class: BaseResultMap
- CORBA、 EJB(JavaEE规范)、WebService比较
- 浅谈try catch finally