Dictionary 按确定对象之和分组的流

Dictionary 按确定对象之和分组的流,dictionary,java-8,java-stream,treemap,collectors,Dictionary,Java 8,Java Stream,Treemap,Collectors,我有这样一个请求类: public class Request { String name,destName; int nSeats; //Example : requestOne,Paris,3 ... } 我想将请求分组在一个映射|整数,字符串列表|中,其中键是具有相同destName的请求的总和,值是目的地的名称 这是我的密码: public TreeMap<Integer, List<String>> destinationsPerNSeats() { ret

我有这样一个请求类:

public class Request 
{
String name,destName;
int nSeats;
//Example : requestOne,Paris,3
...
}
我想将请求分组在一个映射|整数,字符串列表|中,其中键是具有相同destName的请求的总和,值是目的地的名称

这是我的密码:

public TreeMap<Integer, List<String>> destinationsPerNSeats() {
return requests.
stream().
collect(Collectors.groupingBy(Request::getnSeats, TreeMap::new, 
Collectors.mapping(Request::getDestName, Collectors.toList()))).
}
public TreeMap destinationspernsets(){
返回请求。
流()。
collect(collector.groupingBy)(请求::getnSeats,树映射::new,
Collectors.mapping(请求::getDestName,Collectors.toList()))。
}
输入:

TreeMap<Integer, List<String>> map = mgr.destinationsPerNSeats();
print(map);
TreeMap map=mgr.destinationspernsets();
印刷(地图);
输出:{4=[Paris],3=[London,Berlin,Berlin],2=[Paris]}

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


我怎样才能解决这个问题?谢谢

我认为您需要两条
管道。第一个将对目的地进行分组并计算每个目的地名称的总座位数,第二个将根据座位数对目的地名称进行分组:

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));
{3=[London], 6=[Berlin, Paris]}