Java集合排序二:Comparable接口;compareTo()方法;Comparator接口和Comparable接口比较;

99 篇文章 18 订阅
订阅专栏

1.Comparable接口

Comparable接口:

          (1)java.lang包下的接口;

          (2)Comparable接口只有一个方法:int  compareTo(T  o)方法;

                          如: obj1.compareTo(obj2):obj1小于、等于、大于obj2时,分别返回负整数、零、正整数。

          (3)一个集合中的元素是某个自定类型,如果要多其排序,那么这个自定义类需要实现Comparable接口,并且按照业务需求,实现Comparable接口的compareTo(T  o)方法。

          (4)对于集合,其中的元素的类实现了Comparable接口的话,可以调用Collections.sort()方法完成集合的排序;

                 即如果是对集合中的自定义数据排序的话,使用Collections.sort()方法;

                 如果是对数组中的自定义数据进行排序的话,使用Arrays.sort()方法;

……………………………………………………

示例:按照价格从小到大正序排列:

Goods类:集合中存储的元素为Goods类对象;Goods类需要实现Comparable接口,并根据实际业务需要,实现Comparable接口的compareTo()方法;

GoodsTest类:测试类;

/**
 * (1)集合中存放Goods类型的对象,那么Goods类就要实现Comparable接口
 * @author Administrator
 *
 */
public class Goods implements Comparable<Goods> {

	private String id;
	private String name;
	private double price;
	
	public Goods(){}
	public Goods(String id,String name,double price){
		this.id = id;
		this.name = name;
		this.price = price;
	}
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	
	@Override
	public String toString(){
		return "编号:"+id+"名称:"+name+"价格:"+price;
	}
	
	// 根据业务要求,实现Comparable接口中的compareTo()方法
	@Override
	public int compareTo(Goods arg0) {
		
		double price1 = this.getPrice();
		double price2 = arg0.getPrice();
		double diff = price1 - price2;// 根据价格升序排列
		if(diff >0){    
			return 1;
		}else if(diff == 0){
			return 0;
		}else{
			return -1;
		}
		
	}

}
public class GoodsTest {

	public static void main(String[] args) {
		
		Goods g1 = new Goods("s0001","手机",2000);
		Goods g2 = new Goods("s0002","冰箱",5000);
		Goods g3 = new Goods("s0003","电视机",3000);
		ArrayList<Goods> list = new ArrayList<Goods>();
		list.add(g1);
		list.add(g2);
		list.add(g3);
		System.out.println("排序前:");
		for(Goods good:list){
			System.out.println(good);
		}
		Collections.sort(list);    // 调用方法进行集合排序
		System.out.println("排序后:");
		for(Goods good:list){
			System.out.println(good);
		}

	}

}

注:此时调用的sort()方法是一个参数的那个


2.compareTo()方法

可以看到,在使用Comparable接口的时候,接口的实现类实现了compareTo()方法;即这个方法是Comparable接口的compareTo()方法;

其实,对于基本数据类型的包装类,字符串类也都有compareTo()方法

          (1)基本数据类型包装类的compareTo()方法就是比较大小的:

……………………………………………………

          (2)String类的compareTo()方法,是挨个比较字符串中每个字符的Unicode值;全相等就返回0;挨个比较后,遇到小于的了就返回负数,遇到大的了就返回整数。


3.Comparator接口和Comparable接口比较

这儿都是重复阐述,看一下就行

具体在实际应用那种,选择哪种,或二者如何结合使用,需要慢慢积累。

 

Java中的compareTo方法详解
m0_71777195的博客
09-13 2066
ComparableJava中的一个接口,位于java.lang包中。它包含一个方法compareTo,用于定义类的自然排序顺序。自然排序顺序是指一种默认的对象比较方式,通常基于对象的某个属性或多个属性的值。实现Comparable接口的类可以通过compareTo方法来定义它们的自然排序规则。Comparablecsharp复制代码compareTo方法返回一个整数值,该值表示当前对象与另一个对象的比较结果。如果当前对象小于另一个对象,则返回负整数。如果当前对象等于另一个对象,则返回零。
java中的比较器:Comparable接口Comparator接口
weixin_44585687的博客
01-14 343
1.java比较器的使用背景: Java中的对象,正常情况下,只能进行比较: == 或!= ,不能使用 > 或者 < 的 但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。 如何实现?使用两个接口中的任何一个:ComparableComparator 2.自然排序:使用Comparable接口 2.1说明 1.像String、包装类等实现了Comparable接口,重写compareTo()方法,给出了比较两个对象大小 2.像String、包装类重写了compa
Comparable 怎么判断是升序还是降序
liu_rockefeller的博客
04-18 1230
这里的返回值是 this.age - o.age,所以如果 this.age > o.age,返回值会大于 0,排序在后,降序;如果 this.age < o.age,返回值会小于 0,排序在前,升序。现在 this.age > o.age 返回值会小于 0,排序在前,升序;this.age < o.age 返回值会大于 0,排序在后,降序。Comparable 接口compareTo 方法的返回值决定了排序的顺序。
Java中的compareTo()和compare()方法详解
最新发布
2302_77756558的博客
09-12 1242
compare() 方法最典型的应用场景是需要自定义排序规则时。例如,你可以根据一个对象的多个字段来排序,而不必修改类的定义。
[Java] Comparable接口/compareTo方法的介绍和使用
Pilipilip233的博客
06-27 1696
简要介绍下两者的使用和注意事项。
Comparable接口
wuming5205的专栏
04-02 644
public interface Comparable 当需要对一个对象进行排序时,该对象应该实现Comparable接口,并实现其唯一的方法: int compareTo(T o) 在该方法中定义自己的排序规则,当调用Arrays.sort(Object[] a)方法时则回调compareTo()方法,并按照自己的规则对对象数组进行排序。 返回值及比较规则: 1、返回负值-
【学习笔记】---集合框架总结
kevin_g的博客
11-07 143
文章目录 简介 特点 使用集合框架的好处 Iterator接口 ListIterator接口 Collection接口 单列集合继承关系图 List集合 List常用方法 ArrayList、LinkedList、Vector 的区别 遍历时操作元素 Set集合 Set常用方法 HashSet、TreeSet、LinkedHashSet的区别 HashSet如何检查重复 Map接口 双列集合继承关系图 Map常用方法 HashMap、HashTable、Tr
java compare接口_JavaComparable 接口compareTo 方法的写法和用法
weixin_34006342的博客
02-13 630
Comparable 接口有一个 compareTo 方法,用来比较对象的“大、小”。写法例子:// 老师类class Teacher implements Comparable { // Comparable 接口加上了泛型private String name;private int ranking;public void setRanking( int ranking ) {this.r...
对比Java中的Comparable排序接口Comparator比较接口
09-02
Java编程语言中,ComparableComparator接口用于对对象进行比较排序。这两个接口在很多情况下都能派上用场,但它们的应用场景和实现方式有所不同。 首先,Comparable接口排序接口,意味着一个类如果实现了...
Java 比较接口comparablecomparator区别解析
08-25
Java 语言中提供了两个比较接口ComparableComparator,这两个接口都是用于比较对象的大小顺序的,但它们有着不同的使用场景和实现方式。在本文中,我们将详细介绍这两个接口的区别和使用方法Comparable ...
浅析Javacomparator接口Comparable接口的区别
09-01
首先,Comparable接口是一个排序接口,它定义了一个单一的方法`compareTo(T o)`,使得实现了Comparable接口的类的对象能够进行自然排序。这意味着如果你有一个实现了Comparable接口的对象列表(如List),你可以直接...
Java排序接口详解:ComparableComparator的区别与使用
当一个类实现了 Comparable 接口,意味着该类的对象支持比较排序。例如,如果你有一个自定义的类,你可以让其实现 Comparable 接口,这样就可以直接使用 `Collections.sort()` 或 `Arrays.sort()` 对这些对象的...
java比较器--ComparableComparetor
lzq00277的博客
05-29 426
一、Comparable 自然排序 类实现java.lang.Comparable接口,重写compareTo方法,返回int型 package test; import java.util.Arrays; public class Test { public static void main(String[] args) { Computer[] computers = new Computer[4]; computers[0] = new Computer
JavaComparableComparetor
qq_25956141的博客
05-06 951
我们知道,一组int类型的数据,可以通过Arrays.sort()进行排序,而如果是其他类型的数据呢?比如一个对象,那么如何用Arrays.sort()来排序呢? 下面我们以对Person的Age来进行排序,age小的在前面 Comparable public class Person implements Comparable{ private int age;
Java自然排序(个人总结-求赞)
Monster__Day的博客
07-20 5935
这里所说到的Java中的排序并不是指插入排序、希尔排序、归并排序等具体的排序算法。而是指执行这些排序算法时,比较两个对象“大小”的比较操作。我们很容易理解整型的 i>j 这样的比较方式,但当我们对多个对象进行排序时,如何比较两个对象的“大小”呢?这样的比较 stu1 > stu2 显然是不可能通过编译的。为了解决如何比较两个对象大小的问题,JDK提供了两个接口 java.lang.Comparabl
Comparable接口Comparator接口实现数组排序
方间一寸
11-19 630
一、说明 1、 static void sort ( Object[ ] a ): (1)要求对象数组的元素实现java.lang.Comparable接口,即支持比较大小。元素重写的int compareTo(Object obj)指定按照什么排序,就怎么排序 2、static void sort ( Object[ ] a , Comparator c): (1)给对象数组传一个java.util.Comparator接口的实现类对象,重写的int compare(Object o1, Obj
Java-Comparable类(重写compareTo方法)
weixin_44269674的博客
03-08 3411
1.Comparable 接口定义了compareTo方法,用于比较对象,为了找出两个相同类型的。Comparable接口是一个范型接口。在实现该接口时,范型类型E被替换成一种具体的类型。Java库中的许多类实现了Comparable接口以定义对象的自然顺序。Byte、Short、Integer、Long、Float、Double…以及Data类 ...
使用比较器实现接口Comparable覆写compareTo()对对象进行排序
naoguoteng的博客
11-03 430
比较器有两种方法哦! 方法一:实现接口Comparable,覆写compareTo()完成比较 如果最开始的类在设计时就需要排序功能时就可以使用这个方法!!!! 这是最常用的一种方法也是今天小编重点介绍的方法哟! 小编以范例为主来介绍今天的内容哈!!!! package com.xy.text; //包名 import java.lang.reflect.Array; import java.util.Arrays; public class.
java compareable接口_【Java学习笔记】Comparable接口的实现和使用
weixin_31495827的博客
02-16 494
1.什么是Comparable接口接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序,类的compareTo方法被称为它的自然比较方法。实现此接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。 强烈推荐(虽然不是必需的)使自然排序...
写文章

热门文章

  • Chrome的控制台(Console)的用法(超详细,还未细看) 44626
  • MyBatis进阶五:PageHelper分页插件; 43752
  • MySQL对数据的基本操作三:UPDATE语句 39999
  • 附加:【POST请求:方法参数放在url中和放在body中,有什么区别】;也包括【@Param,@RequestParam,@RequestBody这三个【与接收参数有关】的注解,总结】; 38346
  • Servlet[springmvc]的Servlet.init()引发异常; 35995

分类专栏

  • 算法与数据结构 付费 18篇
  • (初中级)2:JVM; 4篇
  • (初中级)3:并发; 1篇
  • (初中级)1:Maven; 25篇
  • (商) SpringCloud/Alibaba微服务架构实战 10篇
  • (夏)Spring Cloud微服务开发自媒体项目 112篇
  • 尚硅谷 Spring Cloud课程 2篇
  • (21)Spring Cloud和微服务入门 5篇
  • (19)Spring Boot电商项目 88篇
  • (20)线程池、分布式、Docker、Nginx、MQ:入门 34篇
  • 异常报错问题整理 7篇
  • (13)Linux基础 24篇
  • (17)SSM开发书评网 37篇
  • 设计模式 1篇
  • (18)Spring Boot入门 10篇
  • (8)IntelliJ IDEA开发工具入门 11篇
  • (15)Spring基础:IoC;AOP;JDBC; 52篇
  • 笔记 1篇
  • (12)慕课OA系统(Mybatis项目案例,比较重要!) 40篇
  • (11)Mybatis 27篇
  • (9)JDBC入门 17篇
  • (16)SpringMVC基础:入门,RESTful,拦截器 30篇
  • (7)MySQL基础 33篇
  • (10)框架前置:maven,工厂模式,反射,Lambda; 35篇
  • JVM入门与性能调优
  • (6)企业门户网站案例,项目开发知识点; 20篇
  • (14)Redis 18篇
  • UML 1篇
  • (5)常用功能与过滤器、监听器、FreeMarker; 46篇
  • (4)JavaWeb基础(网页搭建与JavaWeb基础) 37篇
  • Exam&Test 1篇
  • 工具技巧Tips 10篇
  • (3)JavaScript(网页搭建与JavaWeb基础) 17篇
  • Git(版本控制系统) 11篇
  • 前端问题Tips 1篇
  • (2)HTML&CSS(网页搭建与JavaWeb基础) 40篇
  • (1)Java 99篇
  • Java core 笔记 8篇
  • 人工智能-西瓜书 1篇
  • python 13篇

最新评论

  • MyBatis入门三:MyBatis基本使用一:MyBatis环境配置;(包括,pom引入Mybatis依赖;IDEA配置数据库;引入演示用SQL;mybatis-config.xml配置文件编写;)

    d20220: 那么多细节不讲讲????????????

  • Chrome浏览器开发者工具介绍;(包括,Network面板介绍,XHR等等)

    娜娜子0410: Network里的preview可以看到请求的数据吗

  • Spring Boot电商项目:概述;

    qq_45938601: 佬,怎么开始收费了啊

  • MyBatis进阶五:PageHelper分页插件;

    iikikyo: maven工程有依赖传递,pagehelper 会传递 jsqlparser,所以只用加一个pagehelper依赖即可

  • 数据库的高级查询四:Having子句(Having子句需要和GROUP BY子句结合,才能使用)

    INT__java: 我也有这个问题,有没有解答

大家在看

  • 浮点数储存
  • 代码随想录算法训练营第二十四天|Day24 回溯算法
  • 排序算法 —— 归并排序(理论+代码)
  • ros中的cpp和py运行 132
  • 《R 语言统计分析与可视化从入门到精通》好书推荐

最新文章

  • 89:第七章:开发前台首页、作家个人展示页、粉丝等功能:10:【前台,作家中心:粉丝比例柱状图、饼状图;粉丝地域分布】(前端图表使用Echarts实现;)
  • 88:第七章:开发前台首页、作家个人展示页、粉丝等功能:9:【前台,作家中心,分页查看粉丝列表,接口】;(注意点:简单的条件查询,不一定非得使用tkmybatis的Example的;)
  • 87:第七章:开发前台首页、作家个人展示页、粉丝等功能:8:【显示粉丝数、关注数】;
2022年326篇
2021年427篇
2020年174篇
2018年15篇
2017年10篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢佛像雕塑单价贵州仿铜玻璃钢雕塑供应商东莞市商场美陈商场玻璃钢动物雕塑手工制作商场中空美陈电动葫芦人物雕塑 玻璃钢 孙武浙江专业玻璃钢雕塑按需定制玻璃钢浮雕镂空雕塑报价现代玻璃钢人物雕塑销售方法湖州玻璃钢雕塑价位深圳超市商场美陈市场价成都景区玻璃钢雕塑定制淮北大型玻璃钢雕塑性价比高的玻璃钢雕塑设计宜昌玻璃钢雕塑考拉公司济南玻璃钢雕塑摆件有哪些安徽户内玻璃钢雕塑方法金昌彩色玻璃钢雕塑设计沈阳玻璃钢雕塑制作商场外广场美陈 灯海玻璃钢夏季冰淇淋雕塑菏泽玻璃钢人物卡通雕塑厂家呈贡加工玻璃钢雕塑咨询美陈商场中庭铜仁玻璃钢仿真雕塑山东水果玻璃钢雕塑生产厂家苏州小区玻璃钢雕塑厂家玻璃钢雕塑仿不锈钢甘南仿真玻璃钢雕塑多少钱虞城玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化