package com.yhqtv.java; import org.junit.Test; import java.util.Arrays; import java.util.Comparator; /* * 一,说明:java中的对象,正常情况下,只能进行比较:==或!=,不能使用>或者<的 * 但是在开发场景中,我们需要对多个对象进行排序,言外之意,就是需要比较对象的大小. * 如何实现?使用两个接口中的任何一个:Comparable或者Comparator * * 二.Comparab…
在实际应用中,我们往往有需要比较两个自定义对象大小的地方.而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的.所以Java中要比较对象的大小或者要对对象的集合进行排序,需要通过比较这些对象的某些属性的大小来确定它们之间的大小关系. 一般,Java中通过接口实现两个对象的比较,比较常用就是Comparable接口和Comparator接口.首先类要实现接口,并且使用泛型规定要进行比较的对象所属的类,然后类实现了接口后,还需…
Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者都吃饱撑着没事做吗? 再谈Comparator接口之前,大家应该先了解一个叫“策略模式”的东东.一下是百度百科对策略模式的描写: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化.(原文:The Strategy Pattern…
在实际应用中,我们往往有需要比较两个自定义对象大小的地方.而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的.所以Java中要比较对象的大小或者要对对象的集合进行排序,需要通过比较这些对象的某些属性的大小来确定它们之间的大小关系. 一般,Java中通过接口实现两个对象的比较,比较常用就是Comparable接口和Comparator接口.首先类要实现接口,并且使用泛型规定要进行比较的对象所属的类,然后类实现了接口后,还需…
Collentions工具类--java.util.Collections Collentions是Java集合框架中,用来操作集合对象的工具类,也是Java集合框架的成员,与List.Map和Set是并列的. Collections.sort() 排序方法,实现对List对象中的元素进行排序. package com.test.collection; import java.util.ArrayList; import java.util.Collections; import java.ut…
之前的两篇文章主要学习了Comparable接口和Comparator接口的学习.既然已经学习完了,现在就趁热打铁,进行总结吧! Comparable接口和Comparator接口的共同点: 1. 都是为了进行排序.(废话,当然都是进行排序了!!!嘿嘿,大家都能看出来,不过还是写下来了!) 2. 都是接口.(额..又是废话) 除此之外,小编想不出还有什么共同点了!想到了其他的相同点可以在文章下方留言,大家一起学习! 相同点说完了,接下来就是不同点啦. Comparable接口与Comparato…
1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的, 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Collections.sort( personList ), 是得不到预期的结果的. 这时肯定有人要问, 那为什么可以…
Comparator位于包java.util下,比较器,是在集合外部定义排序.Comparable位于包java.lang下,代表当前对象可比较的,是在集合内部实现排序. Comparable代表一个对象内部支持排序(比如String类,Integer类,内部实现了Comparable接口) Collections.sort(list<T>)中,T必须实现Comparable接口. Comparable只需实现compareTo()函数即可 public int compareTo(Objec…
Comparable & Comparator 都是用来实现集合中元素的比较.排序的: Comparable 是在集合内部定义的方法实现的排序: Comparator 是在集合外部实现的排序: 所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法. Comparator位于包java.util下,而Comparable位于包java.lang下 Comparable 是一个对象本身就已经支持自比较所需要实现的接口(如 Strin…
个人理解: 如果我本身知道这个类的对象我要用来比较,那么就拿这个类实现Comparable接口(compareTo(Object o) 方法).如果我本身没有预料到我要比较这个类的对象,那么,我可以建一个帮助类,让这个帮助类实现Comparator接口(compare()方法) 欢迎指正.…
1.一个类在设计之初就要实现对该类对象的排序功能,那么这个类要实现Comparable接口,实现public int compareTo(T t)方法.如代码中的Student类.对于实现Comparable接口的类, 调用java.util.Arrays.sort(Object[] a)对包含对象实例的数组进行排序, 调用java.util.Collections.sort(List<T> list)对包含对象实例的list进行排序. 2.若一个类在设计之初并没有对排序功能的需求,而是在后续…
一.comparable和Comparator的区别 1.Comparable和Comparator都是用来实现集合中元素的比较.排序的. 2.Comparable是在类内部定义的方法实现的排序,位于java.lang下. 3.Comparator是在类外部实现的排序,位于java.util下. 4.实现Comparable接口需要覆盖compareTo方法,实现Comparator接口需要覆盖compare方法. 5.Comparable接口将比较代码嵌入需要进行比较的类的自身代码中,而Com…
原文地址https://segmentfault.com/a/1190000005738975 实体类:java.lang.Comparable(接口) + comareTo(重写方法),业务排序类 java.util.Comparator(接口) + compare(重写方法). 这两个接口我们非常的熟悉,但是 在用的时候会有一些不知道怎么下手的感觉,现在用案例进行总结,消除对这个知识点的理解盲区(个人的理解,如果有错误 请多多指教).一,在实际的需求中,我们需要根据对象的各种属性(标题,时间…
对象比较器 1.Comparable接口 此接口强行对实现它的每个类的对象进行整体排序,这种排序成为类的自然排序,类的compareTo方法称为类的自然比较方法. 代码示例 import java.util.Arrays; public class Cat implements Comparable<Cat> { private String name; private int age; public Cat() {} public Cat(String name, int age) { th…
1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的. 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Collections.sort( personList), 是得不到预期的结果的. 这时肯定有人要问, 那为什么可以排…
Comparable接口位于:java.lang包中. Comparable接口: 1. 实现了这个接口的类,会被强制进行自然排序. 问题又来了:那什么是自然排序呢? 自然排序:就是字典序排序,不分大小写.例如:a.A都排在b.B之前. 做个简单的测试吧: 现在有个需求,需要让你把用户进行自然排序.So,亲爱的小伙伴们,这应该 怎么做呢? 思路:创建一个用户类(User),且此类实现了Comparable接口,然后进行测试. 记住了呦: Collections.sort();可以对列表进行排序.…
两者都可用来在定义比较方法,然后用在排序中. Comparable是类本身继承的接口 Comparator实在类外定义一个排序的类 比较而言,觉得Comparator更灵活一些,但是Comparable方便一些. 举个栗子: import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Main { public static void main(String…
  Similarities:Both are custom ways to compare two objects.Both return an int describing the relationship between two objects. Differences: Comparator compare() is from the Comparator interface. A comparator object is capable of comparing two differe…
Comparator接口位于:java.util包中. Comparator接口:1. 强行对某个对象的Collection进行整体排序.值得注意的是:Comparator接口可以作为参数传到一些sort()方法中,例如:Collection.sort(List<T> list, Comparator<? super T> c).Arrays.sort(T[] a, Comparator<? super T> c); 2. Comparator接口指定的顺序,可以不是字…
这篇博文可以为你解决的问题如下: 什么是自然排序 Collections.sort()与Arrays.sort()的异同点 Comparatable接口和Comparator接口各自的排序依据(理论讲解) Comparatable接口和Comparator接口实用排序方法(实际例子分析) 综合使用Comparatable和Comparator进行整体排序 以下,我就根据上面的问题来写这篇博文: 1.什么是自然排序     自然排序是一种升序排序.对于不同的数据类型,升序规则不一样: BigDec…
1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的, 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Collections.sort( personList ), 是得不到预期的结果的. 这时肯定有人要问, 那为什么可以…
在Java集合中,如果要比较引用类型泛型的List,我们使用Comparator和Comparable两个接口. Comparable接口 -- 默认比较规则,可比较的 实现该接口表示:这个类的实例可以比较大小,可以进行自然排序 定义了默认的比较规则 其实现类需要实现comparaTo()方法 comparaTo()方法返回整数表示大,负数表示小,0表示相等 Comparator接口 -- 临时比较规则,比较工具接口 用于定义临时比较规则,而不是默认比较规则 其实现类需要实现compara()方…
有的时候在面试时会被问到Comparable<T>和Comparator<T>的区别(或者Java中两种排序功能的实现区别). 1) 在使用普通数组的时候,如果想对数据进行排序,可以调用java.util.Arrays.sort().但要通过该方式对数组进行排序,还需要数组中的对象实现Comparable<T>接口. package org.lyk.entities; public class Book implements Comparable<Book>…
Java的Comparator和Comparable当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序. 1.Comparable简介: Java.lang.Comparable是排序接口.若一个类实现了Comparable接口,就意味着该类支持排序.实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序. 此外,实现此接口的对象可以用作有…
参考:https://www.cnblogs.com/igoodful/p/9517784.html Collections有两种比较规则方式,第一种是使用自身的比较规则: 该类必须实现Comparable接口并重写comparTo方法. this可以想象为1,传入对象o想象为2,返回1-2即按升序排序.返回2-1即按降序排序. 1.首先编写一个实现Comparable接口的实体类 package com.abc; //Comparable接口后面一定要加上需要比较的数据类型 public cl…
//Comparable 接口强行对实现它的每个类的对象进行整体排序. -- 自然排序.类的compareTo称为自然比较方法. public interface Comparable<T> { public int compareTo(T o); } 此接口强行对实现它的每个类的对象进行整体排序.这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法. 实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序…
在今天做的LeetCode的题中有两道都出现了利用接口实现对象的排序.两题的相关链接: 1.利用comparable接口对对象排序 2.利用comparator接口实现排序 因为之前都没接触过这两个接口.一时不能明确它们的作用,所以在网上查找了非常多资料.如今大致弄清楚一些.如今记录下来,有什么欠缺,欢迎大家及时指正 1.Comparable<T>接口 在java API文档中描写叙述此接口是强行将实现它的每个类的对象进行总体排序-----称为该类的自然排序,实现此接口的对象列表和数组能够用C…
默认的排序方法: 让类继承Comparable接口,重写compareTo方法. 示例代码: package com.imooc.collection; import java.util.HashSet; import java.util.Objects; import java.util.Set; /** * 学生类 * Set中的元素是唯一的,不会重复,但是没有顺序. */ public class Student implements Comparable<Student>{ priva…
TreeMap及常用API ①   TreeMap类通过使用红黑树实现Map接口; ②   TreeMap提供按排序顺序存储键/值对的有效手段,同时允许快速检索; ③   不像散列(HashMap),树映射保证它的元素按关键字升序排序; ④   TreeMap构造方法: a)   TreeMap() b)   TreeMap(Comparator comp) c)   TreeMap(Map m) d)   TreeMap(SortedMap sm) ⑤   TreeMap实现SortedMap…
普通情况下在实现对对象元素的数组或集合进行排序的时候会用到Comparator和Comparable接口,通过在元素所在的类中实现这两个接口中的一个.然后对数组或集合调用Arrays.sort或者Collentions.sort方法就可以实现对数组或集合的排序.就sort方法里面的參数来说.实现了不同的接口则传递的參数也不尽同样.对于实现了Comparator接口的类来说.sort方法须要接受的參数不仅包含数组或集合.还要包含实现了该接口的类对象.而对实现了Comparable接口的类来说,參数…