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. kubernetes容器集群自签TLS证书

    集群部署 1.环境规划 2.安装docker 3.自签TLS证书 4.部署Flannel网络 5.部署Etcd集群 6.创建Node节点kubeconfig文件 7.获取K8S二进制包 8.运行Mas ...

  2. JQuery 获取表格table所有行第一列

    main_table 是表ID $("#main_table tr").find("td:eq(0)")

  3. 48th Numpy 常见数组

    1.全0数组 np.zeros(shape, dtype=float, order='C') 指定长度的一维数组 >>> np.zeros(5) array([ 0.,  0.,  ...

  4. 数据库索引原理,及MySQL索引类型(转)

    在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable( ID INT NOT NULL, username ) NOT N ...

  5. wxss 优先级

    外部元素>内部元素>id选择器>class  选择器>元素选择器

  6. OpenCV常用基本处理函数(6)图像梯度

    形态学转换 腐蚀 img = cv2.imread() kernel = np.ones((,),np.uint8) erosion = cv2.erode(img,kernel,iterations ...

  7. iterators和generators

    iterators >>> mylist=[x*x for x in range(3)] >>> mylist [0, 1, 4] generators >& ...

  8. 【leetcode】990. Satisfiability of Equality Equations

    题目如下: Given an array equations of strings that represent relationships between variables, each strin ...

  9. linux IPC 消息队列(二)

    我在网上想找多进程之间的通信方式,发现有人写的消息队列很好,搬过来: common.h #ifndef __COMMON_H_ #define __COMMON_H_ #include <std ...

  10. Security基础(二):SELinux安全防护、加密与解密应用、扫描与抓包分析

    一.SELinux安全防护 目标: 本案例要求熟悉SELinux防护机制的开关及策略配置,完成以下任务: 将Linux服务器的SELinux设为enforcing强制模式 在SELinux启用状态下, ...