集合中的特定属性排序

导读:本篇文章讲解 集合中的特定属性排序,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

很多时候由于需求的复杂性,很多直接从数据库查出的数据并不能直接返回前端,需要进行处理,处理之后又需要排序,这时候一般都会使用Stream流的Sort排序。
这里使用两种方法进行排序

1、使用java8之前的方法排序

public class Demo {
 
	
	
	public static void main(String[] args) {
		
		TestA testA1 = new TestA("老张", 3);
		TestA testA2 = new TestA("老李", 1);
		TestA testA3 = new TestA("老王", 2);
		List<TestA> list  = new ArrayList<>();
		list.add(testA1);
		list.add(testA2);
		list.add(testA3);
		System.out.println("排序前--:"+list.toString());
		Collections.sort(list, new Comparator<TestA>() {
            @Override
            public int compare(TestA o1, TestA o2) {
                //升序
                return o1.getAge().compareTo(o2.getAge());
            }
        });
		System.out.println("升序排序后--:"+list.toString());
		
		Collections.sort(list, new Comparator<TestA>() {
            @Override
            public int compare(TestA o1, TestA o2) {
                //升序
                return o2.getAge().compareTo(o1.getAge());
            }
        });
		System.out.println("降序排序后--:"+list.toString());
		
	}
	

2、java8使用stream流排序

函数式编程的简洁
方式一:使用的正序

// 按照集合中类的某一个属性排序,函数式编程的简洁
voList.sort(comparing(CreatesiteNaviMenuVO::getNaviMenuOrderby));

方式二:使用倒序

// 集合中的后一个元素减去前一个元素,使用的是倒序
item2.getArticleList().sort((t1, t2) -> t2.getCreateTime().compareTo(t1.getCreateTime()));

3、正序、倒序、空值

笔记摘抄链接

场景一:普通排序
正序(升序)

list=list.stream().sorted().collect(Collectors.toList());
1
或者

list.stream().sorted(Comparator.comparing(Student::getAge)) 
1
倒序(降序)

list.stream().sorted(Comparator.reverseOrder())
1
或者

list.stream().sorted(Comparator.comparing(Student::getAge).reversed())
场景二:含空值排序
有时候数据库会有一些错误数据,但是又要求程序不能报错,这怎么办呢?

1.含空值的正序(升序)排序(按创建时间排序)

list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsFirst(Date::compareTo))).collect(Collectors.toList());
1
如果创建时间可能为空就会报错

2.含空值的倒序(降序)排序

nullsFirst:空值放第一位

list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsFirst(Date::compareTo).reversed())).collect(Collectors.toList());
1
nullsLast:空值放最后

list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsLast(Date::compareTo

场景三:不用Stream
// 正序
list.sort(Comparator.comparing(Integer::intValue));
 // 倒序
list.sort(Comparator.comparing(Integer::intValue).reversed());
 // 正序
list.sort(Comparator.comparing(Student::getAge));
  // 倒序
list.sort(Comparator.comparing(Student::getAge).reversed());

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96200.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!