简单写下两种排序方法:
Comparable接口和Comparator接口,两个都是用来实现集合中元素的比较、排序的,只是两个接口使用的方式有些区别:
(1)、Comparable位于java.lang下。
接口中的方法有: int compareTo(Object obj)
Comparator位于java.util下
接口中的方法有两个:
Int compare(Object obj1,Object obj2)
Boolean equals(Object obj)
因为Comparable位于java.lang下显然默认的是Comparable下的方法。
(2)、Comparable是在集合内部定义的方法实现的排序
compareTo()方法是放在对象类里面的,
在集合内部现实 compareTo()的方法。
Comparator是在集合外部实现的排序,
compare()是放在比较对象的类外面的
需要在集合外定义 compare()的方法,也就是再写一个类,而且需要导入 java.util.Comparator类
(3)、在集合中,Collections.sort();方法排序。
在数组中用 Arrays.sort();方法进行排序。
(4)、自定义的类要加入List容器中后才能够排序,如果不指定Comparator,那么就实现 Comparable接口设定的排序方法即自然顺序排序。
(5)、Comparator是一个专用的比较器,当这个对象不支持自比较函数或者自比较函数不能满足要求时,可以写一个比较器来完成两个对象之间大小的比较。
(6)简单说;Comparable接口是一个对象本身已经支持自比较所需要实现的接口。
Comparator是一个另写一个外部类来实现的比较的接口。
例如:Student类实现Comparable接口。按照先按照age
进行排序,如果age相等时再按照name进行排序
代码如下:
public int compareTo(Student stu) {
RuleBasedCollator collator = (RuleBasedCollator) Collator.getInstance(Locale.CHINA);
// 根据元素的年龄排序从低到高,年龄相同时按照姓名排序从低到高
if(this.age<stu.getAge()){
return -1;
}
else if(this.age>stu.getAge()){
return 1;
}
else{
return collator.compare(this.getName(), stu.getName());
}
}
在main函数中,用Collections.sort()方法实现排序。
static List<Student> arr=new ArrayList<Student>();
Student stu1=new Student(1,"张一",23,"北京");
Student stu2=new Student(2,"王二",26,"河南");
Student stu3=new Student(3,"李三",24,"山东");
Student stu4=new Student(4,"张四",25,"北京");
arr.add(stu1);
arr.add(stu2);
arr.add(stu3);
arr.add(stu4);
Collections.sort(arr);
- 浏览: 45966 次
- 性别:
- 来自: 西安
最新评论
-
紫梦飘逸:
Cb123456 写道呵呵,如果在深入点就好了说的好啊
Html5实现本地视频和音频播放 -
Cb123456:
呵呵,如果在深入点就好了
Html5实现本地视频和音频播放 -
xouou_53320:
不错不错 加上雷和电就更好了
多线程雷电 -
sonicwangyue:
...
第一个html--仿英雄联盟 -
Y_1746119035:
≡ ‘(*>﹏<*)′ ~
SQL触发器
相关推荐
通过简单的例子初步了解Comparable和Comparator的使用,注释很详细
本文,先介绍Comparable 和Comparator两个接口,以及它们的差异;接着,通过示例,对它们的使用方法进行说明
Comparable和Comparator接口都可用作普通意义上对象间的比大小,但两个接口在实例化方面的用法不尽相同,接下来我们就来详细对比Java中的Comparable排序接口和Comparator比较器接口
java中Comparable和Comparator的区别 简介 java.lang.Comparable和java.util.Comparator是两个容易混淆的接口,两者都带有比较的意思,那么两个接口到底有什么区别,分别在什么情况下使用呢? Comparable Comparable...
主要介绍了详解Java中Comparable和Comparator接口的区别的相关资料,希望通过本文大家能彻底掌握这部分内容,需要的朋友可以参考下
本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧
实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。 此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。 此 接口只有一个方法...
主要介绍了Java 比较接口comparable与comparator区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
这是java的comparable接口和comparator接口的例子
1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的, 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个...
主要介绍了Java Comparable及Comparator接口区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.10 Java中Comparable和Comparator实现对象比较 1.11 Java中的JNDI (Java命名与目录接口) 1.12 Java事件处理机制与“恋爱关系” 1.13 Java代码优化编程 1.14 Java数组浅析 。。。。。。
用Java的Comparable接口与Comparator接口分别实现类的比较排序~~
实现Comparable接口或Comparator接口,用户可以根据需要对集合中的元素进行排序。为了方便用户使用,Java平台还提供了Collections和Arrays工具类。collection.rar分别对上述内容进行详细讲解演示。
要注意的是List,Set,Queue继承了Collection接口,Map和Collection无关,但他们都是接口,不能直接实例化对象。这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable...
Java集合框架汇总 1.集合框架结构图 1 2.两种特殊的Java容器类List和Set分析 2 3. Collection 接口: 2 4.Iterator 接口: 3 5.List接口: 3 ...8.Comparable接口和Comparator接口: 7 9. 集合框架面试题 7
当且仅当要使用的对象实现Comparable接口时,我们也可以创建不带Comparator对象的SortedList。 用法 我们将像创建Java中的任何ArrayList一样创建SortedList: SortedList sortedlist = new SortedList(comparator); ...
什么是 Comparable 和 Comparator 接口?它们有什么区别? 如何使用 ConcurrentHashMap 类来实现线程安全的映射? 如何避免在多线程环境下对同一集合的并发修改? 如何使用 PriorityQueue 类实现一个最小堆? 如何...
Java源码学习3:java.lang.Comparable接口和java.util.Comparator接口 考虑到所有Number类的派生类都实现了Comparable接口,故而优先学习Comparable接口。 Comparable接口和Comparator接口是相似接口,需要对比下。
在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在了解具体实现方法之前先来看看这两个接口的定义吧. SortComparatorSource接口的功能是返回一个...