Java中TreeSet类Demo
来源:互联网 发布:安卓高清电视直播软件 编辑:程序博客网 时间:2024/06/06 20:23
package day17_Set2;import java.util.Comparator;import java.util.TreeSet;/* * 需求:请按照姓名的长度排序 * * TreeSet集合保证元素和唯一性的原理 * 唯一性:是根据比较的返回值是否是0决定的 * 排序: * A:自然排序(元素具备比较性) * 让元素所属的类实现自然排序的接口Comparable * B:比较器排序(集合具备比较性) * 让集合的构造方法接收一个比较器接口的子类对象Comparator * */public class TreeSetDemo3 { public static void main(String[] args) { // TODO Auto-generated method stub // 创建集合对象 //比较器排序 TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() { //如果一个方法的参数是接口,那么真正要的是接口的实现类的对象 //而匿名类就可以实现这个东西 @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub //姓名长度 int num=o1.getName().length()-o2.getName().length(); //姓名内容 int num2=num==0?o1.getName().compareTo(o2.getName()):num; //年龄 int num3=num2==0?o1.getAge()-o2.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()); } }}
学生类:
package day17_Set2;import java.util.Comparator;/* * 如果一个类的元素想要进行自然排序,就必须实现自然排序接口 * * */public class Student implements Comparable<Student>{ private String name; private int age; public Student() { super(); // TODO Auto-generated constructor stub } 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; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Student other = (Student) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } //重写比较类 @Override public int compareTo(Student o) { //按年龄大小排序// // TODO Auto-generated method stub// //return 0;// //return 1;// // //这里返回数目,其实应该根据我的排序规则来做// //按照年龄排序,主要条件// int num=this.age-o.age;// //次要条件// //年龄相同的时候,还得去看姓名是否也相同// //如果年龄和姓名都相同,才是同一个元素// int num2=num==0?this.name.compareTo(o.name):num;// return num2; //按姓名长度比较 //主要条件 int num=this.name.length()-o.name.length(); //姓名长度相同,不代表姓名的内容也相同 int num2=num==0?this.name.compareTo(o.name):num; //姓名的长度和内容相同,不代表年龄相同,所以还得判断年龄 int num3=num2==0?this.age-o.age:num2; return num3; }// @Override// public int hashCode() {// // TODO Auto-generated method stub// // return this.name.hashCode()+this.age*10;// }// @Override// public boolean equals(Object obj) {// // TODO Auto-generated method stub// if(this==obj){// return true;// }// if(!(obj instanceof Student)){// return false;// }// Student s=(Student)obj;// return this.name.equals(s.name)&&this.age==s.age;// }}
阅读全文
0 0
- Java中TreeSet类Demo
- Java中利用Collections、HashMap、TreeSet混合使用Demo
- java中 TreeSet类用法
- java中TreeSet学习
- Java中TreeSet总结
- TreeSet Demo
- Java TreeSet类
- JAVA 集合类 TREESET
- Java中TreeSet的使用
- Java中TreeSet的用法
- Java中TreeSet的用法
- java容器类---TreeMap、TreeSet
- java的TreeSet类详解
- Java集合中TreeSet的实现原理
- Java中HashSet、TreeSet的区别
- Java中TreeSet与HashSet的对比
- Java中HashSet和TreeSet的区别
- java中TreeSet介绍与简单
- composer介绍
- [LeetCode] 216. Combination Sum III
- 虚拟机的三种网络连接方式
- Js倒计时函数
- UPNP协议(超详细)--客户端之一简介
- Java中TreeSet类Demo
- spring cloud初学者--简单的web项目
- spring-boot使用教程之三:如何使用sts中的热部署来降低代码开发量
- 九度1468
- Makefile中的$(addprefix)
- 从RCNN到Faster RCNN的原理剖析
- Git命令
- 设计模式(三)strategy
- 几种主要的分布