Java8流API:将列表分组到自定义类中
我正试图通过Java8的流API构建一个自定义类实例Java8流API:将列表分组到自定义类中,java,java-8,java-stream,Java,Java 8,Java Stream,我正试图通过Java8的流API构建一个自定义类实例 public class Foo { Group group; // other properties public Group getGroup() { return this.group; } public enum Group { /* ... */ }; } public class FooModel { private Foo.Group group; private List&
public class Foo {
Group group;
// other properties
public Group getGroup() { return this.group; }
public enum Group { /* ... */ };
}
public class FooModel {
private Foo.Group group;
private List<Foo> foos;
// Getter/Setter
}
...
List<Foo> inputList = getFromSomewhere();
List<FooModel> outputList = inputList
.stream()
.collect(Collectors.groupingBy(Foo::getGroup,
???));
公共类Foo{
组;
//其他属性
公共组getGroup(){返回this.Group;}
公共枚举组{/*…*/};
}
公共类模型{
私人食品集团;
私人名单;
//吸气剂/塞特
}
...
List inputList=getfromwhere();
列表输出列表=输入列表
.stream()
.collect(收集器).groupingBy(Foo::getGroup,
???));
但是我不知道下游的收集器必须是什么样子的。
我必须自己实现一个收集器吗(我不这么认为),或者这可以通过组合收集器来实现。
调用吗?您正在寻找这样的东西:
List<FooModel> outputList = inputList
.stream()
.collect(Collectors.groupingBy(Foo::getGroup))// create Map<Foo.Group,List<Foo>>
.entrySet().stream() // go through entry set to create FooModel
.map(
entry-> new FooModel (
entry.getKey(),
entry.getValue()
)
).collect(Collectors.toList());
List outputList=inputList
.stream()
.collect(Collectors.groupingBy(Foo::getGroup))//创建映射
.entrySet().stream()//通过条目集创建FooModel
.地图(
条目->新模型(
entry.getKey(),
entry.getValue()
)
).collect(Collectors.toList());
为什么要分组?你想要什么结果?你能发布一个输入/输出的例子吗?我真的没有在重读三遍后得到这个问题。你介意更具体一点吗?