Java集合框架:List排序,compareTo,compare使用
comparable 和 Comparator 的区别
comparable 接⼝实际上是出⾃java.lang 包 它有⼀个 compareTo(Object obj) ⽅法⽤来排序comparator 接⼝实际上是出⾃ java.util 包它有⼀个compare(Object obj1, Objectobj2) ⽅法⽤来排序。
⼀般我们需要对⼀个集合使⽤⾃定义排序时,我们就要重写compareTo() ⽅法或compare() ⽅法,
当我们需要对某⼀个集合实现两种排序⽅式,⽐如⼀个 学生对象A中的成绩a要按照大小排序的话,我们可以重写compareTo() ⽅法和使⽤⾃制的Comparator ⽅法或者以两个 Comparator来实现歌名排序和歌星名排序,第⼆种代表我们只能使⽤两个参数版Collections.sort() .
compareTo
compareTo是Comparable接口的方法
public interface Comparable<T> {public int compareTo(T o);
}
compareTo方法用于比较两个对象的大小,一般写法
@Overridepublic int compareTo(A o) {if (o.a==this.a) {return 0;}else {return o.a>a?-1:1;}}
用途1:比较
如a.compareTO(b),a小于b返回-1,等于返回0,大于返回1。
用途2:排序
public class A implements Comparable<A>{int a ;public A(int a ){this.a= a;}@Overridepublic int compareTo(A o) {if (o.a==this.a) {return 0;}else {return o.a>a?-1:1;}}@Overridepublic String toString() {return "A{" +"a=" + a +'}';}public static void main(String[] args) {LinkedList<A> as = new LinkedList<>();as.add( new A(2546));as.add( new A(8762));as.add( new A(2324));as.add( new A(3242));as.add( new A(3242));as.add( new A(322));as.add( new A(4322));as.add( new A(6782));System.out.println("排序前:");as.forEach(System.out::println);Collections.sort(as);System.out.println("排序后:");as.forEach(System.out::println);}
}
排序前:
A{a=2546}
A{a=8762}
A{a=2324}
A{a=3242}
A{a=3242}
A{a=322}
A{a=4322}
A{a=6782}
排序后:
A{a=322}
A{a=2324}
A{a=2546}
A{a=3242}
A{a=3242}
A{a=4322}
A{a=6782}
A{a=8762}Process finished with exit code 0
compare
compare是Comparator的接口
public interface Comparator<T> {int compare(T o1, T o2);
}
compare是Comparator的方法,用于集合的排序,但是用的时候需要实现compare方法
下面这种写法是lambda表达式方法,还可以用一个类实现接口的方法来实现
public class B{int a;public B(int a){this.a = a;}@Overridepublic String toString() {return "B{" +"a=" + a +'}';}public static void main(String[] args) {LinkedList<B> bs = new LinkedList<>();bs.add( new B(3333));bs.add( new B(2222));bs.add( new B(1111));bs.add( new B(4444));System.out.println("排序前:");bs.sort((s1, s2) -> s1.a > s2.a ? 1 :-1 );System.out.println("排序后:");bs.forEach(System.out::println);}
}
排序前:
B{a=3333}
B{a=2222}
B{a=1111}
B{a=4444}
排序后:
B{a=1111}
B{a=2222}
B{a=3333}
B{a=4444}Process finished with exit code 0
Java集合框架:List排序,compareTo,compare使用相关推荐
- java arraylist排序_一文读懂Java集合框架
欢迎关注微信公众号:深入浅出Java源码 概念 Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们.集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表, ...
- Java集合框架综述,这篇让你吃透!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:平凡希 cnblogs.com/xiaoxi/p/60899 ...
- java集合框架史上最详解(list set 以及map)
title: Java集合框架史上最详解(list set 以及map) tags: 集合框架 list set map 文章目录 一.集合框架总体架构 1.1 集合框架在被设计时需满足的目标 1.2 ...
- java集合框架综述
一.集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下.Java的集合类主要由两个接口派生而出:Collection和Map,Collection和 ...
- Java集合框架(1)
Collection接口:它是Java集合框架的一个根接口,也是List.Set和Queue接口的父接口.同时它定义了可用于操作List.Set和Queue的方法-增删改查.Map接口:它提供了一种映 ...
- java集合框架图(一)
一.集合类简介 Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)"丢进"该容器中.从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数 ...
- 容器(一)剖析面试最常见问题之 Java 集合框架
转载自https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/Java%E9%9B%86%E5%90%88%E ...
- java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...
一个多月前,作者和一些小伙伴决定做一系列的 Java 知识点常见重要问题的小册,方便用来夯实基础!小册的标准就一个,那就是:取精华,取重点.每一本小册,我们都会充分关注我们所总结的知识点是否达到这个标 ...
- 厉害!Java集合框架综述,这篇让你吃透!
作者:平凡希 来源:cnblogs.com/xiaoxi/p/6089984.html 一.集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下.Ja ...
- Java 集合框架综述
一.集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下.Java的集合类主要由两个接口派生而出:Collection和Map,Collection和 ...
最新文章
- Xamarin Essentials教程语音播报TextToSpeech
- 【论文阅读】Illuminating Pedestrians via Simultaneous Detection Segmentation
- Cloud Foundry Java客户端–流事件
- Python性能测试方法
- 30.构建单机多容器环境-故障31.构建单机多容器环境
- python简明教程_01
- Eric,基于多搜索引擎的自动问答机器人
- 用javascript实现一个打乱文字小程序
- 逻辑究竟是什么以及逻辑应当是什么?
- 大论文 自动生成标题目录、图目录和表目录
- IllegalStateException: Couldn‘t read row 0, col 10 from CursorWindow. Make sure the Cursor is initi
- 顺利通过了CCIE的考试
- 英语watch手表源自wacche
- 资讯|MIUI11正式版推送12款小米手机
- python+javascript+baiduMapAPI实现地图批量标注地点
- SM59 RFC 目标 SAP_PROXY_ESR 设置到服务资源库连接的检查列表
- 用ChatGPT搜索论文教程
- Open3D法线双边滤波, 利用法向信息提高点云滤波效果
- quartz 每30秒执行一次_作业调度框架 Quartz 学习笔记(三) -- Cron表达式
- java 读取文件的指定行_Java中实现读取文件指定行