我用谷歌搜索了它,但我主要找到了按聚合字段分组或更改流响应的案例,但不是以下场景:
我有一个User带有字段category和marketingChannel.
我必须以声明式风格编写一个方法,该方法接受用户列表并基于category和基于marketingChannel单独(即 not groupingBy(... ,groupingBy(..)))计算用户
。
我无法在一个循环中完成。这是我必须达到的目标。
我编码了一些方法如下:
import java.util.*;
import java.util.stream.*;
public class Main
{
public static void main(String[] args) {
List<User> users = User.createDemoList();
imperative(users);
declerativeMultipleLoop(users);
declerativeMultipleColumn(users);
}
public static void imperative(List<User> users){
Map<String, Integer> categoryMap = new HashMap<>();
Map<String, Integer> channelMap = new HashMap<>();
for(User user : users){
Integer value = categoryMap.getOrDefault(user.getCategory(), 0);
categoryMap.put(user.getCategory(), value+1);
value = channelMap.getOrDefault(user.getMarketingChannel(), 0);
channelMap.put(user.getMarketingChannel(), value+1);
}
System.out.println("imperative");
System.out.println(categoryMap);
System.out.println(channelMap); …Run Code Online (Sandbox Code Playgroud)