TreeSet和TreeMap排序时比较元素要求元素对象必须实现Comparable接口

Collections的sort方法比较元素有两种方法:

元素对象实现Comparable接口

实体类Dog

  1. public class Dog implements Cloneable,Comparable<Dog> {
  2.  
  3. private String name;
  4. private String age;
  5.  
  6. public String getName() {
  7. return name;
  8. }
  9. public void setName(String name) {
  10. this.name = name;
  11. }
  12. public String getAge() {
  13. return age;
  14. }
  15. public void setAge(String age) {
  16. this.age = age;
  17. }
  18. public Dog(String name, String age) {
  19. super();
  20. this.name = name;
  21. this.age = age;
  22. }
  23. public Dog() {
  24. super();
  25. }
  26. @Override
  27. public String toString() {
  28. return "Dog [name=" + name + ", age=" + age + "]";
  29. }
  30.  
  31. public Object clone() throws CloneNotSupportedException {
  32.  
  33. return super.clone();
  34. }
  35. @Override
  36. public int compareTo(Dog o) {
  37.  
  38. return this.getName().compareTo(o.getName());
  39. }
  40. }

测试类

  1. public class Test {
  2.  
  3. public static void main(String[] args) {
  4. List<Dog> list = new ArrayList<Dog>();
  5. Dog d1 = new Dog("cac", "11");
  6. Dog d2 = new Dog("bac", "11");
  7. Dog d3 = new Dog("aac", "11");
  8. Dog d4 = new Dog("eac", "11");
  9. list.add(d1);
  10. list.add(d2);
  11. list.add(d3);
  12. list.add(d4);
  13. // MyCompare mc = new MyCompare();
  14. // Collections.sort(list,mc);
  15. Collections.sort(list);
  16. for (Dog dog : list) {
  17. System.out.println(dog);
  18. }
  19.  
  20. }
  21. }

结果:

Dog [name=aac, age=11]
Dog [name=bac, age=11]
Dog [name=cac, age=11]
Dog [name=eac, age=11]

自定义比较器,Collections.sort(List list,Comparator<T> compare),创建比较器类实现接口

  1. public class Test {
  2.  
  3. public static void main(String[] args) {
  4. List<Dog> list = new ArrayList<Dog>();
  5. Dog d1 = new Dog("cac", "11");
  6. Dog d2 = new Dog("bac", "11");
  7. Dog d3 = new Dog("aac", "11");
  8. Dog d4 = new Dog("eac", "11");
  9. list.add(d1);
  10. list.add(d2);
  11. list.add(d3);
  12. list.add(d4);
  13. MyCompare mc = new MyCompare();
  14. Collections.sort(list,mc);
  15. for (Dog dog : list) {
  16. System.out.println(dog);
  17. }
  18.  
  19. }
  20. }
  21.  
  22. class MyCompare implements Comparator<Dog>{
  23.  
  24. @Override
  25. public int compare(Dog d1, Dog d2) {
  26. String s1 = d1.getName();
  27. String s2 = d2.getName();
  28. if(s1.equals(s2))
  29. return 0;
  30. else {
  31. return s1.compareTo(s2);
  32. }
  33. }
  34.  
  35. }

结果:

Dog [name=aac, age=11]
Dog [name=bac, age=11]
Dog [name=cac, age=11]
Dog [name=eac, age=11]

TreeMap和TreeSet在排序时如何比较元素,Collections工具类中的sort()方法如何比较元素的更多相关文章

  1. TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?

    TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大小.TreeMap要求存放的键值对映射的键必 ...

  2. JAVA Collections工具类sort()排序方法

    主要分析内容: 一.Collections工具类两种sort()方法 二.示例 一.Collections工具类两种sort()方法 格式一: public static <T extends ...

  3. LinkedHashSet、Map、Map接口HashMap、Hashtable,TreeSet、TreeMap、如何选择使用集合实现类,Collections工具类

    一.Set接口实现类LinkedHashSet 实现继承图: 1.LinkedHashSet的全面说明 1) LinkedHashSet是 HashSet的子类 2) LinkedHashSet底层是 ...

  4. java 集合Collections 工具类:排序,查找替换。Set、List、Map 的of方法创建不可变集合

    Collections 工具类 Java 提供1个操作 Set List Map 等集合的工具类 Collections ,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了将集合 ...

  5. Java从入门到放弃18---Map集合/HashMap/LinkedHashMap/TreeMap/集合嵌套/Collections工具类常用方法

    Java从入门到放弃18—Map集合/HashMap/LinkedHashMap/TreeMap/集合嵌套/Collections工具类常用方法01 Map集合Map集合处理键值映射关系的数据为了方便 ...

  6. JAVA基础补漏--Collections工具类排序

    Collections在对自定义对象进行排序时,自定义类需要对compareTo()函数进行重写. public class Student implements Comparable<Stud ...

  7. day09 集合排序_Collection接口与Collections工具类

    集合的排序 java.util.Collections类 Collections是集合的工具类,里面定义了很多静态方法用于操作集合. Collections.sort(List list)方法 可以对 ...

  8. flink---实时项目--day02-----1. 解析参数工具类 2. Flink工具类封装 3. 日志采集架构图 4. 测流输出 5. 将kafka中数据写入HDFS 6 KafkaProducer的使用 7 练习

    1. 解析参数工具类(ParameterTool) 该类提供了从不同数据源读取和解析程序参数的简单实用方法,其解析args时,只能支持单只参数. 用来解析main方法传入参数的工具类 public c ...

  9. Java实现单词自定义排序|集合类、工具类排序、comparable、comparator接口

    课题 针对单词进行排序,先按字母的长度排序,长者在前: 在长度相等的情况下,按字典降序排序. 例如,有单词序列"apple banana grape orange",排序后输出结果 ...

随机推荐

  1. Groovy学习:第二章 Groovy语言的关键特征

    1. 断言Assertion断言:用于判断预期的条件是否为真.例子:def list = [1,2,'x']assert list.size()==32. AST转换期使用的注释AST转换的注释:Gr ...

  2. HttpClient 之 4.x.x版本以上的发送Https请求

    https请求比http更安全 是在http的基础上加了SSL数据加密协议. http的连接很简单,是无状态的:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议,比htt ...

  3. 四、spring的JDBC模板和事务管理

    Spring的JDBC模板 Spring是JavaEE开发的一站式框架,对各种持久化技术都提供了简单的模板 ORM持久化技术 模板类 JDBC org.springframework.jdbc.cor ...

  4. Java工作流引擎 Activiti springmvc 后台框架源码 SSM 流程审批

    工作流模块----------------------------------------------------------------------------------------------- ...

  5. Chocolatey Window系统下的软件管理工具

    前言: 使用linux都喜欢使用yum ;apt-get来安装包,非常方便,那么windows也可以使用这样的方式. Chocolatey软件是Windows下的软件安装工具: 使用方法类似linux ...

  6. JS数字转字符串的方法(number to string)

    一.双点解析 ..toString(); 二.括号先计算再转换 ().toString(); 三.加空串 + ''

  7. web之请求转发与重定向

    请求转发: 重定向:

  8. 每天一个linux命令:cp(8)

    cp cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下.cp命令还支持同时复制多个文件,当一次复制多个文件时, ...

  9. oracle-字符串常用函数

    1.拼接字符串 1)可以使用“||”来拼接字符串 -------------------------------------- select '拼接'||'字符串' as str from dual ...

  10. PHP浮点计算结果返回异常问题

    php中如果直接小数点进行计算的话.比如16.8*3var_dump是50.4.但是return就变成了50.400000000000006.至于是什么原因本人尚不得而知.解决方法是用把计算放入下面的 ...