Comparable 和 Comparator 区别以及应用,TreeSet和 List的 自动排序
来源:互联网 发布:淘宝托管骗术 编辑:程序博客网 时间:2024/04/25 01:49
实例Person01.class
package test01_集合添加的时候自动排序;import java.util.Comparator;/** * @version 1.0 * * @author DongXiang * * @action * <br> <a> Comparator 不支持集合的排序功能 ,支持比较:compare(lso,rso); * <br> <a> Comparable 支持集合的排序功能 :compareTo( o ); * * <br> <a>针对于List 集合:1. 实现了Comparable接口的类的对象的方法, * <br> <a> 2. Collections.sort或Arrays.sort进行自动排序。 * <br> <a>针对于Set(TreeSet) 集合:1. 实现了Comparable接口的类的对象的方法, * <br> <a> 2. 重写equals 和 hashCode方法,再往集合中添加元素的时候,自动排序了; * * @time 2017年1月9日下午3:25:47 * */public class Person01 implements Comparable<Person01>,Comparator<Person01>{private String name;private Integer age;private Integer id;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Person01() {super();}public Person01(String name, Integer age, Integer id) {super();this.name = name;this.age = age;this.id = id;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", id=" + id + "]";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((age == null) ? 0 : age.hashCode());result = prime * result + ((id == null) ? 0 : id.hashCode());result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Person01 other = (Person01) obj;if (age == null) {if (other.age != null)return false;} else if (!age.equals(other.age))return false;if (id == null) {if (other.id != null)return false;} else if (!id.equals(other.id))return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}@Overridepublic int compareTo(Person01 o) {int tempAge=this.getAge().compareTo(o.getAge());int tempID=this.getId().compareTo(o.getId());return tempID==0?(tempAge==0?0:tempAge):tempID;}@Overridepublic int compare(Person01 o1, Person01 o2) {int tempAge=o1.getAge().compareTo( o2.getAge());int tempID=o1.getId().compareTo( o2.getId());return tempID==0?(tempAge==0?0:tempAge):tempID;}}
应用Test01.class
package test01_集合添加的时候自动排序;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import java.util.TreeSet;public class Test01 {public static void main(String[] args) {List<Person01> pList=new ArrayList<>();Set<Person01> pSet=new TreeSet<>();Map<String, Person01> pMap=new HashMap<>();Person01 person03=new Person01("p3", 13, 20);Person01 person01=new Person01("p1", 11, 21);Person01 person02=new Person01("p2", 12, 22);Person01 person07=new Person01("p7", 10, 20);Person01 person04=new Person01("p3", 13, 20);Person01 person06=new Person01("p6", 10, 25);Person01 person05=new Person01("p5", 15, 20);pList.add(person03);pList.add(person01);pList.add(person02);pList.add(person07);pList.add(person04);pList.add(person06);pList.add(person05);pSet.add(person03);pSet.add(person01);pSet.add(person02);pSet.add(person07);pSet.add(person04);pSet.add(person06);pSet.add(person05);pMap.put("person03", person03);pMap.put("person01", person01);pMap.put("person02", person02);pMap.put("person07", person07);pMap.put("person04", person04);pMap.put("person06", person06);pMap.put("person05", person05);System.out.println("################ pList 遍历 ##########");Collections.sort(pList);//调用这个方法的时候,按照集合重写的comparable的方法,自动按照排序规则;进行排序。for (Iterator iterator = pList.iterator(); iterator.hasNext();) {Person01 person012 = (Person01) iterator.next();System.out.println(person012.toString());}System.out.println("################ pSet 遍历 ##########");//重写equals 和 hashCode,和Implements Comparable自动按照排序规则;进行排序。for (Iterator iterator = pSet.iterator(); iterator.hasNext();) {Person01 person012 = (Person01) iterator.next();System.out.println(person012.toString());}System.out.println("################ pMap 遍历 ##########");//Set keySet=pMap.keySet();//for (Iterator iterator = keySet.iterator(); iterator.hasNext();) {//String key = (String) iterator.next();//System.out.println("key = "+key+";keyValue = "+pMap.get(key));//}// System.out.println("通过Map.values()遍历所有的value,但不能遍历key");// for (Person01 v : pMap.values()) {// System.out.println("value= " + v);// } for (Map.Entry<String, Person01> entry : pMap.entrySet()) { System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }}}
1 0
- Comparable 和 Comparator 区别以及应用,TreeSet和 List的 自动排序
- list排序comparator和comparable的用法和区别
- TreeSet的排序两种实现方式Comparator和Comparable
- 排序接口Comparable和Comparator的应用
- 关于HashSet、LinkedHashSet和TreeSet以及Comparable和Comparator
- java中Collections.sort(list)排序和Comparator和Comparable的区别
- Comparator和Comparable的区别
- Comparable和 Comparator的区别
- Comparator和Comparable的区别
- comparable和comparator的区别
- Comparable和Comparator的区别
- Comparator 和 Comparable 的区别
- comparable和comparator的区别
- Comparable和Comparator的区别
- Comparable和Comparator的区别
- Comparable和Comparator的区别
- Comparable和Comparator的区别
- Comparable 和 Comparator的区别
- 欢迎使用CSDN-markdown编辑器
- mysql5.7.13-win64.zip安装
- GCC常用参数详解
- c语言获取当前工作路径(转)
- 在Linux环境Ubuntu/CentOS系统中,安装meteor环境
- Comparable 和 Comparator 区别以及应用,TreeSet和 List的 自动排序
- HTML渲染过程详解
- Android Studio debug调试
- 源路径名太长或文件名太长解决方法
- 关于system.runtime.interopservices.comexception(0x800A1066)的问题
- MP算法和OMP算法及其思想与实现
- 【计算机操作系统】操作系统--分页存储管理方式
- uboot目录结构介绍
- 2. Add Two Numbers