我有以下课程:class Data { String systemId; String fileName; int x; int y; Data(String systemId, String fileName, int x, int y) { this.systemId = systemId; this.fileName = fileName; this.x = x; this.y = y; } public String getSystemId() { return systemId; } public void setSystemId(String systemId) { this.systemId = systemId; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } }class Result { int x; int y; Result(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } }List<Data> dataList = new ArrayList<>();Data x1 = new Data("n1", "f1", 1, 2);Data x2 = new Data("n1", "f1", 3, 4);Data x3 = new Data("n1", "f1", 5, 6);Data x4 = new Data("n1", "f2", 7, 8);Data x5 = new Data("n2", "f1", 9, 10);Data x6 = new Data("n2", "f2", 11, 12);Data x7 = new Data("n3", "f1", 13, 14);Data x8 = new Data("n4", "f1", 15, 16);dataList.add(x1);dataList.add(x2);dataList.add(x3);dataList.add(x4);dataList.add(x5);dataList.add(x6);dataList.add(x7);dataList.add(x8);我想使用 Java 流Map<String, List<Result>>从给定的输入列表中创建一个。此外,列表值需要根据字段(x 和 y)按升序排序映射的键是由冒号连接的 systemid 和文件名的组合。我尝试通过 systemid 和文件名的组合进行分组,但无法继续使用该方法。
1 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
您可以将groupingBy
收集器与mapping
下游一起使用:
Map<String, List<Result>> map = data.stream() .collect(Collectors.groupingBy(a -> a.getSystemId() + ":" + a.getFileName() , Collectors.mapping(a -> new Result(a.getX(), a.getY()), Collectors.toList())));
添加回答
举报
0/150
提交
取消