TreeSet存储自定义对象,并对对象排序的两种方式
2014-10-09 22:42
573 查看
想有一个自定义对象,先搞一个Student类。 //Student.java
package com.huowolf; public class Student implements Comparable{ private String name; private int age; public Student(String name, int age) { 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; } public int compareTo(Object obj) { if(!(obj instanceof Student)) throw new RuntimeException("不是学生对象"); Student stu=(Student)obj; if(this.age>stu.age) return 1; if(this.age==stu.age) return this.name.compareTo(stu.name); return -1; } }
//TreeSetDemo1.java
package com.huowolf; import java.util.Iterator; import java.util.TreeSet; /** * @author huowolf *排序的第一种方式:让元素自身具备比较性。 *元素需要实现Comparable接口,覆盖compareTo方法 *这种方式也元素的自然顺序 */ public class TreeSetDemo { public static void main(String[] args) { TreeSet<Object> ts= new TreeSet<Object>(); ts.add(new Student("lisi01",22)); ts.add(new Student("lisi02",20)); ts.add(new Student("lisi03",18)); ts.add(new Student("lisi04",25)); ts.add(new Student("lisi05",18)); Iterator it = ts.iterator(); while(it.hasNext()) { Student stu = (Student) it.next(); System.out.println("姓名:"+stu.getName()+" 年龄:"+stu.getAge()); } } }
//TreeSetDemo2.java
package com.huowolf; import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; /** * @author huowolf *排序的第二种方式:当元素自身不具备比较性时,让集合自身具备比较性。 *在集合初始化时,指定比较器。 */ public class TreeSetDemo2 { public static void main(String[] args) { TreeSet<Object> ts= new TreeSet<Object>(new MyCompare()); ts.add(new Student("lisi01",22)); ts.add(new Student("lisi02",20)); ts.add(new Student("lisi03",18)); ts.add(new Student("lisi04",25)); ts.add(new Student("lisi02",27)); Iterator it = ts.iterator(); while(it.hasNext()) { Student stu = (Student) it.next(); System.out.println("姓名:"+stu.getName()+" 年龄:"+stu.getAge()); } } } class MyCompare implements Comparator { public int compare(Object o1,Object o2) { Student s1 = (Student) o1; Student s2 = (Student) o2; int num = s1.getName().compareTo(s2.getName()); if(num==0) //return s1.getAge()-(s2.getAge()); return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); return num; } }
相关文章推荐
- JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
- JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
- HashMap存储自定义对象练习(两种取出方式)
- 集合中自定义对象排序的两种方式
- TreeSet存储自定义对象并保证排序和唯一
- TreeSet存储自定义对象并遍历练习1(按照姓名排序)
- 在TreeSet中实现存储自定义对象,并且能够按照特定的顺序排序
- TreeSet排序,存储自定义对象,自定义比较器示例
- Java 往TreeSet集合中存储自定义对象学生,按照学生的年龄进行排序。
- TreeSet存储自定义对象并遍历练习2(按照姓名的长度排序)
- TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式
- TreeSet的自然排序(自定义对象 compareTo方法)
- 集合框架---TreeSet存储自定义对象
- java集合TreeSet的两种排序方式
- TreeSet集合两种排序方式
- Java基础知识强化之集合框架笔记46:Set集合之TreeSet存储自定义对象并遍历练习2(自然排序)
- Python的自定义排序 以及两种排序方式
- TreeSet对元素进行排序实现的两种方式
- TreeSet的两种排序方式
- 在TreeSet中实现存储自定义对象