[java集合]comparable与comparator
来源:互联网 发布:js创建图片对象 编辑:程序博客网 时间:2024/05/16 19:46
/** * comparable 接口在类设计中就应该由类去实现,并实现compareTo方法。 接口位于java.lang包下。 对比方法叫compareTo comparator 接口在类已经完成之后还想再要比较。 接口位于java.util包下 对比方法叫compare */TreeSet<TestChild> treeSet = new TreeSet<>();treeSet.add(new TestChild("java02",2));treeSet.add(new TestChild("java03",3));treeSet.add(new TestChild("java01",1));treeSet.add(new TestChild("java01",2));/** * 输出 java01........1 java01........2 java02........2 java03........3 */Iterator<TestChild> iterator = treeSet.iterator();while(iterator.hasNext()){ TestChild testChild = iterator.next(); System.out.println(testChild.getName() +"........" + testChild.getAge());}System.out.println("===================我是分割线==================");//treeSet如果有比较器则优先使用比较器排序,否则用实现的comparable接口中的compareTo方法比较。TreeSet<TestChild> treeSet1 = new TreeSet<>(new TestChildComparator());treeSet1.add(new TestChild("java02",2));treeSet1.add(new TestChild("java03",3));treeSet1.add(new TestChild("java01",1));treeSet1.add(new TestChild("java01",2));iterator = treeSet1.iterator();/** treeSet1.add(new TestChild("java01",2)); 失败的原因是比较器年龄相同返回0,hashSet看成相同元素,不添加。 输出 java03........3 java02........2 java01........1 */while(iterator.hasNext()){ TestChild testChild = iterator.next(); System.out.println(testChild.getName() +"........" + testChild.getAge());}System.out.println("===================我是分割线之二==================");TreeSet<TestChild> treeSet2 = new TreeSet<>();treeSet2.add(new TestChild("java02",2));treeSet2.add(new TestChild("java03",3));treeSet2.add(new TestChild("java01",1));treeSet2.add(new TestChild("java01",2));TestChild[] aaa = new TestChild[treeSet2.size()];Arrays.sort(treeSet2.toArray(aaa),new TestChildComparator());iterator = treeSet2.iterator();/** 添加成功 treeSet2.add(new TestChild("java01",2)); 因为一开始么有用比较器,所以添加成功。 输出 java01........1 java01........2 java02........2 java03........3 */while(iterator.hasNext()){ TestChild testChild = iterator.next(); System.out.println(testChild.getName() +"........" + testChild.getAge());}System.out.println("===================我是分割线之三==================");/** 输出 java03........3 java01........2 java02........2 java01........1 */for (int i = 0 ; i < aaa.length ; i ++){ System.out.println(aaa[i].getName() +"........" + aaa[i].getAge());}
private static class TestChildComparator implements Comparator<TestChild>{ @Override public int compare(TestChild o1, TestChild o2) { if(o1.getAge() > o2.getAge()){ return -1; }else if(o1.getAge() == o2.getAge()){ return 0; } return 1; }}private static class TestChild implements Comparable{ private String name; private int age; public TestChild(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int compareTo(Object o) { TestChild testChild = (TestChild)o; if(age > testChild.getAge()){ return 1; }else if(age == testChild.getAge()){ return name.compareTo(testChild.getName()); } return -1; } @Override public boolean equals(Object obj) { TestChild testChild = (TestChild)obj; return testChild.getAge() == testChild.getAge(); }}
0 0
- [java集合]comparable与comparator
- Java集合中Comparable与Comparator
- java Comparator 与Comparable
- Java的comparable与comparator
- java之Comparator与Comparable
- Java数据结构 Comparable与Comparator
- Java中的Comparable与Comparator
- Java中的Comparable与Comparator
- java集合中Comparable和Comparator辨析
- java集合中Comparable和Comparator辨析
- java 集合排序(Comparable、Comparator)
- Java集合中Comparable和Comparator辨析
- 集合排序 Comparator Comparable
- 集合排序 Comparator Comparable
- 集合, 数组,Comparable,Comparator
- 接口 Comparable与Comparator的区别 (Java)
- java中comparator与comparable的解析
- Java 7之基础 - Comparable与Comparator
- 关于JSON的概念以及JSONP的来历和实现以及跨域原理
- 让VSCODE标题栏显示文档全路径
- svn报错:“Previous operation has not finished; run 'cleanup' if it was interrupted“ 的解决方法
- Java Web应用调优线程池/ java多线程管理 concurrent包用法详解
- React+Webpack+Nodejs+Express快速构建项目
- [java集合]comparable与comparator
- 管理表
- 大数据与MapReduce
- Warning: Division by zero in /Users/open/PhpstormProjects/empManage/EmpService
- Nginx 源码阅读笔记5 初始化 cycle
- 消息队列的exclusive consumer功能是如何保证消息有序和防止脑裂的
- pandas如何取出表中一列数据所有的值并转换为array类型
- 1065. 单身狗(25)
- 纠删码技术详解(上)| 数据存储