JAVA里List集合中的对象根据对象的某个属性值降序或者升序排序
需要使用JDK1.8及以上
package com.stream; import java.util.Comparator;
import java.util.List; public class Test {
public static void main(String[] args) {
List<TestDto> dtoList=TestDto.getDtos(); //根据TestDto对象的priority字段降序排序
dtoList.sort(Comparator.comparing(TestDto::getPriority).reversed());
//根据TestDto对象的sort字段升序排序
// dtoList.sort(Comparator.comparing(TestDto::getSort)); for (TestDto d:dtoList
) {
System.out.println(d);
}
}
}
//多个字段排序
//先以属性一降序,再进行属性二降序 多个字段 后面追加即可
list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二,Comparator.reverseOrder()));
自定义方法排序
List<TestDto> list=getDtos();
Collections.sort(list, (TestDto b1, TestDto b2) -> {
/**
* 可以自定义方法,
* 返回 1 ->排在上面
* 返回 -1 ->排在下面
*/
if (b1.getPriority()>b2.getPriority()){
return -1;
}
return 1;
});
TestDto.java
package com.stream; import com.test.Test; import java.util.ArrayList;
import java.util.List; public class TestDto { private Integer id; private Integer sort; private Integer priority; public TestDto(Integer id, Integer sort, Integer priority) {
this.id = id;
this.sort = sort;
this.priority = priority;
} public TestDto() {
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public Integer getSort() {
return sort;
} public void setSort(Integer sort) {
this.sort = sort;
} public Integer getPriority() {
return priority;
} public void setPriority(Integer priority) {
this.priority = priority;
} @Override
public String toString() {
return "TestDto{" +
"id=" + id +
", sort=" + sort +
", priority=" + priority +
'}';
} public static List<TestDto> getDtos(){
List<TestDto> dtos=new ArrayList<>(); TestDto dto1=new TestDto(1,2,3); TestDto dto2=new TestDto(2,3,1); TestDto dto3=new TestDto(3,1,2); dtos.add(dto1);
dtos.add(dto2); dtos.add(dto3); return dtos; }
}
JAVA里List集合中的对象根据对象的某个属性值降序或者升序排序的更多相关文章
- java:替换List集合中的某个任意值(对象)
定义replaceAll方法,将传入的新值替换集合中的老值(list,old,new) private static <E> void replaceAll(List<E> l ...
- Java 去除 ArrayList 集合中的重复元素
// One practice package Collection; import java.util.ArrayList; import java.util.Iterator; // 去除 Arr ...
- Java去除ArrayList集合中重复字符串的案例
ArrayList去除集合中的字符串重复值 分析: A:创建集合对象 B:添加多个字符串元素 C:创建新集合 D:遍历旧集合,获取得到每一个元素 E:拿着个元素到新集合去找,看有没有 有:不进去 没有 ...
- Java基础之集合框架——使用堆栈Stack<>对象模拟发牌(TryDeal)
控制台程序. public enum Rank { TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, A ...
- 去除ArrayList集合中的重复自定义对象元素
要求去除ArrayList集合中重复的Student的对象(什么叫重复,所有属性值都相同叫做重复). 思路: 1.创建一个新集合 2.遍历旧集合中的每一个元素,去新集合中找这个元素,如果这个元素不存在 ...
- java基础64 JavaScript中的Arrays数组对象和prototype原型属性(网页知识)
1.Arrays数组对象的创建方式 方式一: var 变量名=new Array(); //创建一个长度为0的数组. 方式二: var 变量名=new Array(长度); //创建一个指定长度的数组 ...
- java 判断Map集合中包含指定的键名,则返回true,否则返回false。
public static void main(String[] args) { Map map = new HashMap(); //定义Map对象 map.put("apple" ...
- java范型集合中的成员排序
范型集合中的类是JsonObject,不是自定义类,如果是自定义类就直接取要比较的字段值. ArrayList<JSONObject> TList = new ArrayList<J ...
- Java——删除Map集合中key-value值
通过迭代器删除Map集合中的key-value值 Iterator<String> iter = map.keySet().iterator(); while(iter.hasNext() ...
随机推荐
- Codeforces 258E - Little Elephant and Tree(根号暴力/线段树+标记永久化/主席树+标记永久化/普通线段树/可撤销线段树,hot tea)
Codeforces 题目传送门 & 洛谷题目传送门 yyq:"hot tea 不常有,做过了就不能再错过了" 似乎这是半年前某场 hb 模拟赛的 T2?当时 ycx.ym ...
- 解决sourceforge下载文件慢的方法
Sourceforge是一些开源软件经常用到的网站,然而国内的网站一直不稳定,如今是可以访问,但是一直无法下载,或者是下载速度慢,导致下载中断 镜像源:http://sourceforge.mirro ...
- mysql order by 多个字段排序实现组内排序
总结:大组在前,小组在后,计量值再最后,即可实现组内排序:下边是参考别人的具体实例: 工作中需用到order by 后两个字段排序,但结果却产生了一个Bug,以此备录. [1]复现问题场景 为了说明问 ...
- Selenium的安装和使用
一.Selenium的安装,Selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击.下拉等操作.对于一些JavaScript渲染的页面来说,这种抓取方式非常有效.1.pi ...
- 34、在排序数组中查找元素的第一个和最后一个位置 | 算法(leetode,附思维导图 + 全部解法)300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(34)在排序数组中查找元素的第一个和最后一个位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: / ...
- java运行报错 has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
解决方法: 解决办法: 在项目的属性里设置jdk版本,方法是右击项目-->properties-->java compiler --> Enable project specific ...
- 日常Java 2021/10/3
方法: 用System.out.println()来解释,println()是一个方法,System是系统类,out 是标准输出对象. 也就是调用系统类中的对象中的方法. 注重方法:可以是程序简洁,有 ...
- A Child's History of England.15
And indeed it did. For, the great army landing from the great fleet, near Exeter, went forward, layi ...
- 【leetcode】212. Word Search II
Given an m x n board of characters and a list of strings words, return all words on the board. Each ...
- mysql explain using index condition
Using where:表示优化器需要通过索引回表查询数据:Using index:表示直接访问索引就足够获取到所需要的数据,不需要通过索引回表:Using index condition:在5.6版 ...