Java learn 集合框架(比较器 聚合操作(伊始))

这篇博客介绍了Java中如何使用Comparator和Comparable对对象进行排序。Comparator适用于不修改原始类的情况下按特定属性排序,而Comparable则需要在类内部实现接口。文章详细展示了两种实现方式,并提到了JDK8后的聚合操作和Lambda表达式在排序中的应用。
摘要由CSDN通过智能技术生成

比较器:

import java.util.Comparator;
是一个用于比较多个对象特定属性值的大小的类——也就是 设计一个类实例化其对象 会包含诸多属性值 那么排序多个对象时对于容器类来说 要利用到工具类Collections 其中的sort这个方法可以实现 但是对象属性太多没指定是按照那个 因此会报错
为解决 利用到Comparator 这个比较器 来选取特定属性值进行操作 就可以避免。

解决方式 有两种写法:
1、
在要对其实例化对象的类进行接口Comparable的方法实现 可以查看接口Comparable的源码

 public int compareTo(player o)
    {
    	if(o.passion>passion)
    	return 1;
    	else
    		return -1;
    }

注意: 此处要重写toString 因为println 有疑问可以查看源码
以上对于Comparable 方法的实现 为什么要return 1 只是一种标识 其他数字都可以 为的是区分 当返回1的时候 是大于 否则其他数是小于

在实例化对象的类中 实现接口后 在新建的测试类中 直接Collections.sort() 就可以了。

2、
不在实例化对象的类中实现接口 在测试类里方法重载
这里就需要 对Comparator类 进行实例化对象 且写法有点像匿名类

Comparator<player> Co=new Comparator<player>() {
				public int compare(player h1,player h2)
				{
					if(h1.passion>h2.passion)
					return 1;
					else
						return -1;
				}
			};

除了以上还有更简便的写法:

 Collections.sort(sd,new Comparator<player>() {
            @Override
            public int compare(player h1, player h2) {
                return (int) (h2.hp-h1.hp);
            }
        });

实质就是把Co这个对象直接代替为代码块。

注意:这里的不是compareTo 而是compare 这种写法 更加清晰可观。

之后在Collections.sort()
会出现以下的情况:
在这里插入图片描述
把实例化的Comparator对象 放入即可。

聚合操作:
JDK 8 之后引入了对集合的聚合操作,可以非常容易的遍历,筛选,比较集合中的元素。
介于Lambda 表达式还未学习只是稍加了解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值