【【Java基础】Comparable和Comparator两种比较器的区别(原理+实现)】教程文章相关的互联网学习教程文章

Java中Comparable和Comparator实现对象比较【代码】【图】

当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。下面通过两个例子分别用Comparable和Comparator实现对User对象中年龄排序。1.通过实现Comparable接口,根据User的年龄进行排序。import java.util.Arrays;/*** @author pengcqu* */publicclass ComparableUser implements Comparable {private String id;privateint age;public ComparableUser(String id, ...

java中的排序Comparable接口和Comparator接口【代码】

普通的类要实现排序,必须实现Comparable接口,并重写CompareTo()方法。 package test; public class Field implements Comparable<Field> { private String name; private int age; public Field() { } public Field(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { ...

Java基础之Comparable接口, Collections类,Iterator接口,泛型(Generic)【代码】【图】

一、Comparable接口, Collections类 List的常用算法: sort(List); 排序,如果需要对自定义的类进行排序, 那就必须要让其实现Comparable接口, 实现比较两个类大小的方法 shuffle(List); 随机排列 void reverse(List); 逆序排列(Linked效率较高) copy(); 复制集合, 前提是size()相同(长度, 和容量的区别) fill(List, Object);使用某个对象填充整个List binarySearch();//使用二分搜索法之前先排序例子:package collectiontext;impor...

Java之Comparable接口和Comparator接口【代码】

Comparable & Comparator 都是用来实现集合中元素的比较、排序的;Comparable 是在集合内部定义的方法实现的排序;Comparator 是在集合外部实现的排序;所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。Comparator位于包java.util下,而Comparable位于包java.lang下 Comparable 是一个对象本身就已经支持自比较所需要实现的接口(如 String、Integer 自己就可以完成比较大小操...

Java comparable接口 对象排序

前面写了一篇文章是关于comparator的,那么comparable就必须拿出来做了分析对比。关于这俩个接口的文章也比较多,本文着重从完整的代码示例去展现说明。OK首先,还是看下Comparator这里接口的代码:public interface Comparable<T> {/*** Compares this object with the specified object for order. Returns a* negative integer, zero, or a positive integer as this object is less* than, equal to, or greater than the spe...

Java中Comparable和Comparator的区别

Java中Comparable和Comparator区别小结Comparable是排序接口,若一个类实现了该接口,代表该类支持排序,而Comparator是比较器接口,通过实现某个类的比较器来对该类进行排序。 Comparable相当于"内部比较器“,Comparator相当于"外部比较器"。原文:https://www.cnblogs.com/hunter-w/p/14403525.html

Java--comparator接口与Comparable接口的区别

1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的, 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Collections.sort( personList ),是得不到预期的结果的. 这时肯定有人要问, 那为什么可以排序一个字符串list呢: 如 StringList{"hello1" , "hello3" , "hello2"}, Colle...

java.lang.Comparable接口

转自:http://blog.csdn.net/zccst/article/details/5092920java.lang.Comparable 接口作者: zccst java.lang.Comparable 接口定义的 compareTo() 方法用于提供对其实现类的对象进行整体排序所需要的比较逻辑。实现类基于 compareTo() 方法的排序被称为自然排序。而 compareTo() 方法的排序被称为它的自然排序。具体的排序原则可由实现类根据需要而定。用户在重写 compareTo() 方法以定制比较逻辑时,需要确保其余等价性判断方法 ...

javable之Comparable【代码】

我们知道,在Java的集合类中是有一些可复用的算法的,比如Collections.sort()从小到大排序,Collections.min(),最小值Collections.max()最大值,这些对于list操作来说都是非常常见的,也经常需要用到 List<String> strings = new ArrayList<String>();strings.add("ab");strings.add("cc");strings.add("bc");Collections.sort(strings);String max =Collections.max(strings);String min =Collections.min(strings);System.out.pr...

Java 集合类(1)--Comparable 和 Comparator的比较【代码】

Comparable 是在集合内部定义的方法实现的排序;Comparator 是在集合外部实现的排序 Comparator位于包java.util下,而Comparable位于包java.lang下 Comparable 是一个对象本身就已经支持自比较所需要实现的接口,如 String、Integer 自己就可以完成比较大小操作,已经实现了Comparable接口 Comparator 是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比...

Java排序方法--List,数组,【自定义】继承Comparable和Comparator【代码】

(一)list和数组①List默认排序代码:public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("阿a里 ");list.add("不b安定 ");list.add("嘻x嘻 ");list.add("一y一 ");list.add("传c递 ");list.add("东d西 ");list.add("耳e朵 ");list.add("分f数 ");for (int i=0;i<list.size();i++){System.out.print(list.get(i));}//降序【以现有list的顺序----从后往前输出 】System.out.println(" 降序"...

Java Comparable Class – 比较方法违反了其一般合同【代码】

我正在编写一个等距游戏,根据Y坐标渲染对象,使用类似的类,按Y值排序,然后进行更改.我收到错误“比较方法违反了它的总合同!”并阅读了有关如何返回负数,0或正数的信息,所以我已经实现了这个:public boolean equals(Entity e) {if ((e.y-y)==0)return (e.id == id);return (e.y == y); }public int compareTo(Entity e) {if ((e.y-y)==0)return (e.id - id);return (int) (e.y - y); // Render order by y coordinate }但我仍然得到...

javaSE Comparable接口中的compareTo()方法【代码】

我们都知道,要对自建对象按照一定规则进行排序的话,要求自建对象实现Comparable接口,并重写compareTo() 方法,但compareTo() 方法的释义却不是那么容易搞清楚,下面举例进行阐述: 声明一个Student类(成员变量id,name)实现Comparable接口,然后重写compareTo()方法, public class Student implements Comparable<Student>{ private int id; private String name;@Overridepublic int compareTo(Student o) {if(this.id...

Java中Comparable和Comparator接口的区别【代码】

一、Comparable简介Comparable是排序接口。 若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。该接口定义如下: package java.lang; import java.util.*; public interface Comparable<T> { public int compareTo(T o); } T表...

java学习笔记——Comparator和Comparable【代码】

目录 ComparableComparator注意 Comparable Comparable是排序接口如果一个类实现了Comparable接口,就说明该类支持排序。此外,实现Comparable接口的类的对象可以用作有序映射(如TreeMap)中的键或有序集合中的元素,而不需要指定比较器。Comparable接口所定义的顺序,叫做natural ordering。当向支持排序的集合中添加该类元素后,在对该集合排序时,就会调用comparaTo方法来进行natural ordering进行排序。接口中通过x.comparaTo...