gpt4 book ai didi

dictionary - 按确定对象的总和进行流分组

转载 作者:行者123 更新时间:2023-12-03 01:30:05 25 4
gpt4 key购买 nike

我有一个像这样的请求类:

public class Request 
{
String name,destName;
int nSeats;
//Example : requestOne,Paris,3
...
}

我想将请求分组到 Map |Integer,List of String| 中其中键是具有相同 destName 的请求的总和,值是目的地的名称。

这是我的代码:

public TreeMap<Integer, List<String>> destinationsPerNSeats() {
return requests.
stream().
collect(Collectors.groupingBy(Request::getnSeats, TreeMap::new,
Collectors.mapping(Request::getDestName, Collectors.toList()))).
}

输入:

TreeMap<Integer, List<String>> map = mgr.destinationsPerNSeats();
print(map);

输出:{4=[巴黎]、3=[伦敦、柏林、柏林]、2=[巴黎]}

预期输出:{6=[柏林、巴黎]、3=[伦敦]}

我该如何解决这个问题?谢谢!

最佳答案

我认为您需要两个Stream管道。第一个将对目的地进行分组并对每个目的地名称的座位总数进行求和,第二个将按座位数对目的地名称进行分组:

public TreeMap<Integer, List<String>> destinationsPerNSeats() {
return
requests.stream()
.collect(Collectors.groupingBy(Request::getDestName,
Collectors.summingInt(Request::getnSeats)))
.entrySet()
.stream()
.collect(Collectors.groupingBy(Map.Entry::getValue,
TreeMap::new,
Collectors.mapping(Map.Entry::getKey,Collectors.toList())));
}

使用以下输入测试您的代码:

List<Request> requests = new ArrayList<> ();
requests.add (new Request("John","Paris",4));
requests.add (new Request("Ben","London",3));
requests.add (new Request("Dan","Berlin",3));
requests.add (new Request("Sara","Berlin",3));
requests.add (new Request("Jenn","Paris",2));

生成 map :

{3=[London], 6=[Berlin, Paris]}

关于dictionary - 按确定对象的总和进行流分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51134657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com