TreeMap和TreeSet在排序时如何比较元素,Collections工具类中的sort()方法如何比较元素
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()方法如何比较元素的更多相关文章
- TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大小.TreeMap要求存放的键值对映射的键必 ...
- JAVA Collections工具类sort()排序方法
主要分析内容: 一.Collections工具类两种sort()方法 二.示例 一.Collections工具类两种sort()方法 格式一: public static <T extends ...
- LinkedHashSet、Map、Map接口HashMap、Hashtable,TreeSet、TreeMap、如何选择使用集合实现类,Collections工具类
一.Set接口实现类LinkedHashSet 实现继承图: 1.LinkedHashSet的全面说明 1) LinkedHashSet是 HashSet的子类 2) LinkedHashSet底层是 ...
- java 集合Collections 工具类:排序,查找替换。Set、List、Map 的of方法创建不可变集合
Collections 工具类 Java 提供1个操作 Set List Map 等集合的工具类 Collections ,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了将集合 ...
- Java从入门到放弃18---Map集合/HashMap/LinkedHashMap/TreeMap/集合嵌套/Collections工具类常用方法
Java从入门到放弃18—Map集合/HashMap/LinkedHashMap/TreeMap/集合嵌套/Collections工具类常用方法01 Map集合Map集合处理键值映射关系的数据为了方便 ...
- JAVA基础补漏--Collections工具类排序
Collections在对自定义对象进行排序时,自定义类需要对compareTo()函数进行重写. public class Student implements Comparable<Stud ...
- day09 集合排序_Collection接口与Collections工具类
集合的排序 java.util.Collections类 Collections是集合的工具类,里面定义了很多静态方法用于操作集合. Collections.sort(List list)方法 可以对 ...
- flink---实时项目--day02-----1. 解析参数工具类 2. Flink工具类封装 3. 日志采集架构图 4. 测流输出 5. 将kafka中数据写入HDFS 6 KafkaProducer的使用 7 练习
1. 解析参数工具类(ParameterTool) 该类提供了从不同数据源读取和解析程序参数的简单实用方法,其解析args时,只能支持单只参数. 用来解析main方法传入参数的工具类 public c ...
- Java实现单词自定义排序|集合类、工具类排序、comparable、comparator接口
课题 针对单词进行排序,先按字母的长度排序,长者在前: 在长度相等的情况下,按字典降序排序. 例如,有单词序列"apple banana grape orange",排序后输出结果 ...
随机推荐
- RabbitMq--4--集群(转载)
RabbitMQ消息服务用户手册 1 基础知识 1.1 集群总体概述 Rabbitmq Broker集群是多个erlang节点的逻辑组,每个节点运行Rabbitmq应用,他们之间共享用户.虚拟主机.队 ...
- python2和python3编码
python2编码 unicode:unicode 你好 u'\u4f60\u597d' | | | | encode('utf8')| |decode('utf8') encode('gbk')| ...
- Linux将动态IP改为静态IP
1.编辑 ifcfg-eth0 文件,vim 最小化安装时没有被安装,需要自行安装不描述. 2.修改如下内容 BOOTPROTO="static" #dhcp改为static ON ...
- 最长上升子序列(LIS)长度及其数量
例题51Nod-1376,一个经典问题,给出一个序列问该序列的LIS以及LIS的数量. 这里我学习了两种解法,思路和代码都是参考这两位大佬的: https://www.cnblogs.com/reve ...
- python5数据存储
1 txt文件存储 正常调用文件python文件操作 https://www.cnblogs.com/x2x3/p/9979919.html 2 json文件存储 在JavaScript语言中,一切都 ...
- [javase基础] JDK JRE JVM的区别?
JDK Java Development Kit 用作开发, 包含了JRE,编译器和其他的工具(比如: JavaDoc,Java调试器),可以让开发者开发.编译.执行Java应用程序. JRE Jav ...
- webpack第一节(2)
安装webpack在文件夹中 安装完成如图所示 牛刀小试 在webpack-test根目录下新建一个hello.js (不新建在node-modules文件夹下面的目的是,该文件夹是webpack的依 ...
- 【leetcode】923. 3Sum With Multiplicity
题目如下: Given an integer array A, and an integer target, return the number of tuples i, j, k such tha ...
- mac终端命令--常用快捷键
Ctrl + c 取消当前行输入的命令,进入下一行.或者中止一个错误的或者发疯的命令 Ctrl + a 光标移动到行首(Ahead of line),相当于通常的Home ...
- jsp中$使用不了
导入了jstl <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>为啥 ...