Java lambda 根据集合当中某一属性降序排列获取第一条
可以使用Java的lambda表达式和Comparator来实现该需求。假设集合中的元素类型为T,属性类型为P,可以按照以下步骤进行操作:
- 创建一个Comparator对象,通过lambda表达式指定比较规则。比如,如果要按照属性P降序排列,则可以使用如下代码创建Comparator对象:
Comparator<T> comparator = (obj1, obj2) -> obj2.getP().compareTo(obj1.getP());
这个lambda表达式会根据属性P的值进行降序排列。
- 使用Collections类的sort方法,将集合按照指定的Comparator进行排序。比如,如果集合的变量名为list,则可以使用如下代码进行排序:
Collections.sort(list, comparator);
- 获取排序后的第一条记录。由于集合已经按照降序排列,所以第一条记录就是属性P值最大的记录。可以使用list的get方法来获取第一条记录。
T firstItem = list.get(0);
完整的代码示例如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Item> list = new ArrayList<>();
// 添加元素到集合中
// 创建一个Comparator对象,按照属性P降序排列
Comparator<Item> comparator = (obj1, obj2) -> obj2.getP().compareTo(obj1.getP());
// 使用Comparator对集合进行排序
Collections.sort(list, comparator);
// 获取排序后的第一条记录
Item firstItem = list.get(0);
// 打印第一条记录
System.out.println(firstItem);
}
}
class Item {
private String name;
private int p;
// 构造函数和getter/setter方法省略
public int getP() {
return p;
}
@Override
public String toString() {
return "Item [name=" + name + ", p=" + p + "]";
}
}
请注意,以上示例中的Item类是一个自定义的类,根据实际情况进行修改
原文地址: https://www.cveoy.top/t/topic/hyB5 著作权归作者所有。请勿转载和采集!