Java集合(三)TreeSet的使用
2016-03-25 14:28
471 查看
package com.pason.treeset; import java.util.Comparator; import java.util.TreeSet; /* * TreeSet容器和HashSet一样都不能放重复的对象 * 最主要的是TreeSet中的对象要求必须能自己排序(排序方式要自己定义) * String类已经实现Comparable,所以不用自己定义 * 所以TreeSet使用的时候更注重Comparable的实现 * 在比较的时候,如果比较结果返回0那么只能加入1个对象 */ public class TreeSetDemo { public static void main(String[] args) { //如果容器中的元素不定义比较规则 //这时候会报Exception in thread "main" //java.lang.ClassCastException,原因是User类不会自己排序 //我们要实现Comparable接口才能add //Java中有两种排序的比较器 //1)java.lang.Comparable TreeSet<User> user = new TreeSet<User>(); User user1 = new User("Pason",123); User user2 = new User("Wade",456); User user3 = new User("Lee",789); user.add(user1); user.add(user2); user.add(user3); user.add(user2); System.out.println(user); //2)java.util.Comparator //TreeSet构造的时候,把Comparator作为构造器的参数 /** * 第二种写法(匿名内部类,也可以在外部写一个类实现Comparator接口,然后在本类内new一个对象传入TreeSet构造器) * TreeSet<User> user= new TreeSet<User>(new Comparator<User>() { * * public int compare(User arg0, User arg1) { * return arg0.getName().compareTo(arg1.getName()); * } * } ); * User user1 = new User("Pason",123); * User user2 = new User("Wade",456); * User user3 = new User("Lee",789); * user.add(user1); * user.add(user2); * user.add(user3); * System.out.println(user); * */ } }
package com.pason.treeset; class User implements Comparable<User> { private String name; private int id; public User(String name, int id) { super(); this.name = name; this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } @Override public String toString() { return "Student [name=" + name + ", id=" + id + "]"; } //重写compareTo方法 public int compareTo(User arg0) { //自己定义,只要不同就要返回非0值 if (!this.name.equals(arg0.name)) return this.name.compareTo(arg0.name); return 0; } }
相关文章推荐
- Ruby中的集合编写指南
- AVG 7.5.1.43 版本 序列号 集合
- SQL Server游标的使用/关闭/释放/优化小结
- 编写高质量代码改善C#程序――使用泛型集合代替非泛型集合(建议20)
- C#检查指定对象是否存在于ArrayList集合中的方法
- C#写入对象或集合类型数据到xml文件的方法
- C#中的集合用法分析
- JavaScript Archive Network 集合
- Backbone.js中的集合详解
- jQuery学习7 操作JavaScript对象和集合的函数
- 网页代码常用小技巧总结第1/3页
- 详解JAVA高质量代码之数组与集合
- 基于Java回顾之集合的总结概述
- 探讨:如何使用委托,匿名方法对集合进行万能排序
- JavaScript中的集合及效率
- C#各种集合操作的性能总结
- html的DOM中document对象forms集合用法实例
- ASP.NET中实现把form表单元素转为实体对象或集合
- html的DOM中document对象anchors集合用法实例
- html的DOM中document对象images集合用法实例