[TreeMap和TreeSet]——简单应用
2016-03-21 22:53
302 查看
[TreeMap和TreeSet]——简单应用
第一种是实体类实现Comparable引用,即自定义了排序业务,装入TreeMap和TreeSet即可。内部原理后续深入了解。public class Worker implements java.lang.Comparable<Worker>{ private String type;//实现了 private double salary; public Worker() { } public Worker(String type, double salary) { super(); this.type = type; this.salary = salary; } @Override public int compareTo(Worker o) { return this.salary>o.salary?1:(this.salary==o.salary?0:-1); } @Override public String toString() { return "工种:"+this.type+",工资:"+this.salary+"\n"; } }使用TreeMap进行业务逻辑的处理。
public class TreeMapDemo{ public static void main(String[] args) { Worker w1=new Worker("程序员", 12300); Worker w2=new Worker("农民工", 5844); Worker w3=new Worker("家里蹲", 200); TreeMap<Worker, String> employees=new TreeMap<Worker, String>(); employees.put(w1,"1");//保证不重复 employees.put(w2,"1"); employees.put(w3,"1"); System.out.println(employees.keySet()); } }使用TreeSet进行业务逻辑的处理。
public class TreeSetDemo{//实体类实现Comparable引用 public static void main(String[] args) { Worker w1=new Worker("程序员", 2300); Worker w2=new Worker("农民工", 5844); Worker w3=new Worker("家里蹲", 100); TreeSet<Worker> employees=new TreeSet<Worker>(); employees.add(w1); employees.add(w2); employees.add(w3); System.out.println(employees); } }另一种是实体类本身没有定义业务逻辑,向TreeSet和TreeMap传入自定义规则。
public class Person { private final String name; private final int handsome; public Person(){ name=null; handsome=0; } public Person(String name, int handsome) { super(); this.name = name; this.handsome = handsome; } public int getHandsome() { return handsome; } @Override public String toString() { return "姓名:"+this.name+",帅气指数:"+this.handsome+"\n"; } }使用TreeMap,添加自定义逻辑。
public class TreeMap { public static void main(String[] args) { Person p1=new Person("张三", 126); Person p2=new Person("李四", 133); Person p3=new Person("王武", 122); java.util.TreeMap<Person, String> map=new java.util.TreeMap<Person, String>( new Comparator<Person>(){ @Override public int compare(Person o1, Person o2) { return (o1.getHandsome()-o2.getHandsome()); } } ); map.put(p1, "1");//保证不重复 map.put(p2, "1"); map.put(p3, "1"); Set<Person> persons=map.keySet();//查看键 System.out.print(persons); } }使用TreeSet,添加自定义逻辑。
public class TreeSetAPP { public static void main(String[] args) {//提供了解耦方式,业务排序类 Person p1=new Person("张三", 126); Person p2=new Person("李四", 133); Person p3=new Person("王武", 122); Person p4=new Person("大洼", 35); //依次存放到TreeSet,使用排序的业务类(匿名内部类) TreeSet<Person> persons=new TreeSet<Person>( new Comparator<Person>(){ @Override public int compare(Person o1, Person o2) { return -(o1.getHandsome()-o2.getHandsome()); } } ); persons.add(p1);//TreeSet在添加数据时排序 persons.add(p2); persons.add(p3); persons.add(p4); System.out.println(persons); } }第一种方法,我觉得两者相当于一个装满水的桶,实体类对象相当于是体积不同而质量相同的球,把他们放入水中,他们有相对于彼此的比较方法,自行排列完成。
第二种方法,类似不同的球,他们之间没有对对方的属性判断,装进水桶后,水桶里面的水根据自己的方法来排列这些球。
想知道这些原理,还需要再深入了解。
相关文章推荐
- Java中HashMap和TreeMap的区别深入理解
- 当key为自定义类时,TreeMap的使用及输出
- 【Java基础】集合
- 使用TreeMap按值排序遇到的问题
- 黑马程序员————Map集合类总结、HashMap类、linkedHashMap类、TreeMap类
- 关于TreeSet<E>泛型类中的compareTo()方法的调用
- TreeMap中文排序
- 黑马程序员------------------java基础--------------------集合
- 黑马程序员-双列集合
- JAVA基础之集合数组详解
- “黑马程序员” TreeSet
- 黑马程序员-----Java基础-----Collection-Set
- 黑马程序员_Java之Map集合
- TreeMap的实现原理
- Java Set集合之Treeset
- TreeSet()详解
- Set接口及其实现类
- 黑马程序员---2015.6.21.java基础笔记---TreeSet---HashSet---HashMap
- 【课堂程序整理】字符统计
- JavaSE 学习参考:TreeSet