Java8如何对Stream进行排序操作呢?

转自:

Java8如何对Stream进行排序操作呢?

下文讲述Java8中对Stream进行排序操作的方法分享,如下所示:

实现思路:
    使用sorted()即可实现对Stream进行排序操作
如:
  sorted(): 产生一个新流,按自然顺序排序
  sorted(Comparator comp): 产生一个新流,使用比较器顺序进行排序操作 

例: 新建一个User集合

List<User> users = Arrays.asList(
       new User("user-1",8),
	   new User("user-3",18),
	   new User("user-2",11),
	   new User("user-5",17),
	   new User("user-4",6)
    );

sorted()排序

@Test
public void test2(){
    users.stream()
        .map(User::getName)
        .sorted()
        .forEach(System.out::println);
}
使用名字进行排序,将输出以下信息:
user-1
user-2
user-3
user-4
user-5


例:

package com.java265;

import java.util.Arrays;
import java.util.List;

public class testMain {

	/*
	 * java265.com Sorted示例
	 */
	public static void main(String[] args) {

		List<User> t = Arrays.asList(new User("user-1", 8), new User("user-3", 18), new User("user-2", 11),
				new User("user-5", 17), new User("user-4", 6));
		t.stream().map(User::getName).sorted().forEach(System.out::println);

		System.out.println("============================");

		/* 根据年龄排序 */
		t.stream().sorted((x, y) -> Integer.compare(x.getAge(), y.getAge()))
				.forEach((y) -> System.out.println(y.getName() + "--" + "age:" + y.getAge()));

	}
}

class User {
	private String name;
	private Integer age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public User(String name, Integer age) {

		this.name = name;
		this.age = age;
	}

	public User() {

	}
}
--------运行以上代码,将输出以下信息-----
user-1
user-2
user-3
user-4
user-5
============================
user-4--age:6
user-1--age:8
user-2--age:11
user-5--age:17
user-3--age:18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值