培森的Blog Java Java8 Stream 流操作集合 【收藏】

Java8 Stream 流操作集合 【收藏】

List<User> userList = userService.…

List<User> userList = userService.getUserList();

一. 将装有User对象的List集合转为一个Map集合,key 为 id,值为对象本身;当然,key和值由你的需求来定;e指代当前User对象;

Map<String, User> collect = userList.stream().collect(Collectors.toMap(User::getId, e -> e));
Map<String, String> collect1 = userList.stream().collect(Collectors.toMap(User::getId, e -> e.getName()));

二. 将集合中的对象按照对象的属性分组成一个Map集合,这里按照User的id来分组

Map<String, List<User>> stringListMap = userList.stream().collect(Collectors.groupingBy(User::getId));

三. 获取集合中所有对象的某个属性值转为一个集合并去重,这里以id为例

List<String> userIds = userList.stream().map(User::getId).distinct().collect(Collectors.toList());

四.针对对象的熟悉,过滤求和

Integer collect = list.stream().filter(e->e.getScore() != null).collect(Collectors.summingInt(User::getScore));

List<String> collect1 = list.stream().filter(e->e.getName() != null).map(User::getName).collect(Collectors.toList());

五.规约,字符串拼接

 public static void main(String[] args) {
        List<User> userList = new ArrayList<>();
        User user = new User();
        user.setId("1");
        user.setName("李白");
        user.setScore(null);
        userList.add(user);

代码示例

import java.util.*;
import java.util.function.*;

public class PredicateTest2
{
	public static void main(String[] args)
	{
		// 创建books集合、为books集合添加元素的代码与前一个程序相同。
		Collection books = new HashSet();
		books.add(new String("轻量级Java EE企业应用实战"));
		books.add(new String("疯狂Java讲义"));
		books.add(new String("疯狂iOS讲义"));
		books.add(new String("疯狂Ajax讲义"));
		books.add(new String("疯狂Android讲义"));
		// 统计书名包含“疯狂”子串的图书数量
		System.out.println(calAll(books , ele-&gt;((String)ele).contains("疯狂")));
		// 统计书名包含“Java”子串的图书数量
		System.out.println(calAll(books , ele-&gt;((String)ele).contains("Java")));
		// 统计书名字符串长度大于10的图书数量
		System.out.println(calAll(books , ele-&gt;((String)ele).length() &gt; 10));
		
		// 使用Lambda表达式(目标类型是Predicate)过滤集合
		books.removeIf(ele -&gt; ((String)ele).length() &lt; 10);
		System.out.println(books);
	}
	public static int calAll(Collection books , Predicate p)
	{
		int total = 0;
		for (Object obj : books)
		{
			// 使用Predicate的test()方法判断该对象是否满足Predicate指定的条件
			if (p.test(obj))
			{
				total ++;
			}
		}
		return total;
	}

本文来自网络,不代表培森的Blog立场,转载请注明出处:https://blog.xupeisen.com/archives/107

作者: 培森

联系我们

联系我们

13262951234

在线咨询: QQ交谈

邮箱: admin@xupeisen.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部