往TreeMap和TreeSet里添加自定义对象的两种比较方法
来源:互联网 发布:python谷歌浏览器驱动 编辑:程序博客网 时间:2024/06/07 19:19
这个问题之前有点乱,下面我们详细来说一下
首先我们先从set说起,set集合的特点就是不可以存重复的数据,那么我们只需要equals方法就可以,那么需要在公司类中重写equals方法。如果补充协议equals方法的话,其实就是他们的地址比较。对于Treeset和TreeMap,除了比较相等,我们还需要排序。我们有两种方式,一是company类实现comparable接口,重写compareTo方法,或者是写比较类实现comparactor方法,在集合创建时传递该比较对象。
import java.util.*;public class Test2 { public static void main(String[] args) { // TODO Auto-generated method stub MyComByA com = new MyComByA(); TreeMap<Company1, String> tm = new TreeMap<Company1, String>(); Company1 c1 = new Company1("baidu",10010,"aaa",12); Company1 c2 = new Company1("baid",10010,"aaa",1);// tm.put(c1, "aaa");// tm.put(c2, "aaa"); HashSet<Company1> ts = new HashSet<Company1>(); ts.add(c1); ts.add(c2); System.out.println(ts); }}class MyComByA implements Comparator<Company1>{ @Override public int compare(Company1 c1, Company1 c2) { // TODO Auto-generated method stub int n = c1.num - c2.num; n = n==0?c1.Founder.compareTo(c2.Founder):n; n = n==0?c1.name.compareTo(c2.name):n; n = n==0?c1.no-c2.no:n; return n; }}class Company1 { String name; int num; String Founder; int no; public Company1(String name, int num, String founder, int no) { super(); this.name = name; this.num = num; Founder = founder; this.no = no; }// public int compareTo(Company1 c){// int n = num - c.num;// // n = n==0?name.compareTo(c.name):n;// return n;// } public boolean equals(Company1 c){ int n = num - c.num; n = n==0?name.compareTo(c.name):n; if(n==0) return true; else return false; } public String toString(){ return "姓名:"+name+" num:"+num+" "+no+" "+Founder; }}
0 0
- 往TreeMap和TreeSet里添加自定义对象的两种比较方法
- java之TreeSet里添加自定义对象
- 自定义类的对象作为TreeSet元素的两种方法排序浅谈
- TreeSet中自定义排序的两种方法
- TreeSet添加自定义元素(比较)
- TreeSet 的两种比较性
- 黑马程序员 TreeSet集合里的对象需要自定义compareTo方法
- TreeSet(对象排序功能)和自定义比较器
- 关于TreeSet内添加具体的自定义对象的排序
- TreeMap的key和TreeSet理解
- TreeSet 和 TreeMap 的源码分析
- TreeSet存储自定义对象,并对对象排序的两种方式
- Treeset的两种排序方法
- Treeset的两种排序方法
- TreeSet的两种排序方法
- Treeset的两种排序方法
- Treeset的两种排序方法
- TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
- 【NOIP提高】公约数
- 【Spark Java API】Transformation(4)—coalesce、repartition
- AlarmManager使用
- 用Python实现网络爬虫
- php几种排序算法
- 往TreeMap和TreeSet里添加自定义对象的两种比较方法
- Unix/Linux系统使用命令wall,write,mesg命令实现快速对话
- python的字符串操作汇总
- Tomcat 序列化
- 【Spark Java API】Transformation(5)—cartesian、distinct
- ZZULIOJ-1919: D
- LDPC码---信道编码理论
- 图的创建与遍历(C++)
- 深入理解Java对象序列化