Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)
2015-10-06 22:02
1086 查看
1. TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)
(1)Student.java:
(2)TreeSetDemo.java:
运行结果如下:
(1)Student.java:
package cn.itcast_07; public class Student { private String name; private int age; public Student() { super(); } public Student(String name, int age) { super(); this.name = name; this.age = age; } 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; } }
(2)TreeSetDemo.java:
package cn.itcast_07; import java.util.Comparator; import java.util.TreeSet; /* * 需求:请按照姓名的长度排序 * * TreeSet集合保证元素排序和唯一性的原理 * 唯一性:是根据比较的返回是否是0来决定。 * 排序: * A:自然排序(元素具备比较性) * 让元素所属的类实现自然排序接口 Comparable * B:比较器排序(集合具备比较性) * 让集合的构造方法接收一个比较器接口的子类对象 Comparator */ public class TreeSetDemo { public static void main(String[] args) { // 创建集合对象 // TreeSet<Student> ts = new TreeSet<Student>(); //自然排序 // public TreeSet(Comparator comparator) //比较器排序 // TreeSet<Student> ts = new TreeSet<Student>(new MyComparator()); // 如果一个方法的参数是接口,那么真正要的是接口的实现类的对象 // 而匿名内部类就可以实现这个东西 TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() { @Override public int compare(Student s1, Student s2) { // 姓名长度 int num = s1.getName().length() - s2.getName().length(); // 姓名内容 int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num; // 年龄 int num3 = num2 == 0 ? s1.getAge() - s2.getAge() : num2; return num3; } }); // 创建元素 Student s1 = new Student("linqingxia", 27); Student s2 = new Student("zhangguorong", 29); Student s3 = new Student("wanglihong", 23); Student s4 = new Student("linqingxia", 27); Student s5 = new Student("liushishi", 22); Student s6 = new Student("wuqilong", 40); Student s7 = new Student("fengqingy", 22); Student s8 = new Student("linqingxia", 29); // 添加元素 ts.add(s1); ts.add(s2); ts.add(s3); ts.add(s4); ts.add(s5); ts.add(s6); ts.add(s7); ts.add(s8); // 遍历 for (Student s : ts) { System.out.println(s.getName() + "---" + s.getAge()); } } }
运行结果如下:
相关文章推荐
- Java高级3
- Java基础重点指南
- Java语言程序设计(基础篇)原书第十版 课后习题 第三章
- java的JDK环境配置详细说明
- Struts2中参数传递与OGNL
- CXF框架集成到Spring
- javaWEB项目心得之模块开发步骤
- Struts2 MySQL数据库访问
- spring整合struts2、mybatis的配置
- spring 作用域之单例模式/原型模型
- Java EE (8) -- Java EE Patterns
- Java反射实践
- [深入理解Java虚拟机]第四章 虚拟机性能监控与故障处理工具
- Java基础知识强化之集合框架笔记46:Set集合之TreeSet存储自定义对象并遍历练习2(自然排序)
- 替代Java类的日期和时间【 Joda Time】
- struts1的html详细用法示例
- java笔记--java多线程
- Java三星题之剪刀石头布(三局两胜)
- 使用Spring配置事务时遇到的问题
- Java集合框架常用类源码分析与总结