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

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

元素对象实现Comparable接口

实体类Dog

 public class Dog implements Cloneable,Comparable<Dog> {

     private String name;
private String age; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Dog(String name, String age) {
super();
this.name = name;
this.age = age;
}
public Dog() {
super();
}
@Override
public String toString() {
return "Dog [name=" + name + ", age=" + age + "]";
} public Object clone() throws CloneNotSupportedException { return super.clone();
}
@Override
public int compareTo(Dog o) { return this.getName().compareTo(o.getName());
}
}

测试类

 public class Test {

     public static void main(String[] args) {
List<Dog> list = new ArrayList<Dog>();
Dog d1 = new Dog("cac", "11");
Dog d2 = new Dog("bac", "11");
Dog d3 = new Dog("aac", "11");
Dog d4 = new Dog("eac", "11");
list.add(d1);
list.add(d2);
list.add(d3);
list.add(d4);
// MyCompare mc = new MyCompare();
// Collections.sort(list,mc);
Collections.sort(list);
for (Dog dog : list) {
System.out.println(dog);
} }
}

结果:

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),创建比较器类实现接口

 public class Test {

     public static void main(String[] args) {
List<Dog> list = new ArrayList<Dog>();
Dog d1 = new Dog("cac", "11");
Dog d2 = new Dog("bac", "11");
Dog d3 = new Dog("aac", "11");
Dog d4 = new Dog("eac", "11");
list.add(d1);
list.add(d2);
list.add(d3);
list.add(d4);
MyCompare mc = new MyCompare();
Collections.sort(list,mc);
for (Dog dog : list) {
System.out.println(dog);
} }
} class MyCompare implements Comparator<Dog>{ @Override
public int compare(Dog d1, Dog d2) {
String s1 = d1.getName();
String s2 = d2.getName();
if(s1.equals(s2))
return 0;
else {
return s1.compareTo(s2);
}
} }

结果:

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. Codeforces 492B Name That Tune ( 期望DP )

    B. Name That Tune time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  2. poj3252 Round Numbers(数位dp)

    题目传送门 Round Numbers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16439   Accepted: 6 ...

  3. ORM:Chloe

    ORM的一种:Chloe注意实体类模板特色:多表连接 利用chloe实现对各表的增删查改的管理,判断现有物料是否能够支持生产规模. 一开始报错: IQuery<ProductionPlans&g ...

  4. js非布尔值的与(&&)与或(||)运算

    /** * 非布尔值的与(&&)与或(||)运算 * 1.先将其转换成布尔值再做运算,并且返回原值 * 2.与(&&)运算: * a.如果第一个值为true,则返回第二 ...

  5. 【记录】vue构建项目npm install错误run `npm audit fix` to fix them, or `npm audit` for details

    今天构建vue项目执行npm install初始化后报错 run `npm audit fix` to fix them, or `npm audit` for details 出现这问题控制台会有一 ...

  6. EventBus总结(原)

    1.EventBus的作用 EventBus is a publish/subscribe event bus for Android and Java. EventBus可以被用来在各种自定义的监听 ...

  7. 解读dbcp自动重连那些事(转)

    转自:http://agapple.iteye.com/blog/791943 Hi all : 最近在做 offerdetail 优化时,替换了数据库驱动,从 c3p0 0.9.1 -> db ...

  8. el-table的样式修改

    修改头部样式: .el-table .el-table__header-wrapper tr th{ background-color: rgb(18, 47, 92)!important; colo ...

  9. Python技能树

    本博客Python内容的索引,以后就照着它写了.

  10. MySQL UNSIGNED

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484087.html UNSIGNED属性就是将数字类型无符号化,与C.C++这些程序语言中的uns ...