使用Java streams创建具有动态值的员工列表

使用Java streams创建具有动态值的员工列表,java,functional-programming,java-stream,Java,Functional Programming,Java Stream,我有一个用例,我必须创建id递增的默认员工列表 List<Employee> employeeList = new ArrayList<>(); int count = 0; while (count++ <= 100){ Employee employee = new Employee(count, "a"+count); employeeList.add(employee); } List employeeList=new ArrayList(

我有一个用例,我必须创建id递增的默认员工列表

List<Employee> employeeList = new ArrayList<>();
int count = 0;
while (count++ <= 100){
    Employee employee = new Employee(count, "a"+count);
    employeeList.add(employee);
}
List employeeList=new ArrayList();
整数计数=0;
while(count++您可以与
rangeClosed(int startInclusive,int endInclusive)
一起使用来生成计数

List<Employee> employeeList = IntStream.rangeClosed(0,100)
                                       .boxed()
                                       .map(count-> new Employee(count, "a"+count))
                                       .collect(Collectors.toList());
List employeeList=IntStream.rangeClosed(0100)
.boxed()
.map(计数->新员工(计数,“a”+计数))
.collect(Collectors.toList());
或者你可以使用

List employeeList=Stream.iterate(0,n->n+1)
.限额(100)
.map(i->新员工(i,“a”+i))
.collect(收集器.toList())

Stream.iterate(0,n->n+1).limit(100).map(i->newemployee(i,“a”+i)).collector(Collectors.toList())
OMG,感谢上帝投了反对票,有没有机会解释一下原因?我刚刚遇到了这个问题。这不是我,但可能是因为你在使用
mapToObj
创建状态,根据我在本网站讨论中读到的内容,这是对该方法的滥用。我相信我是在Meta上读到的。我会尝试找到它,因为我现在也很好奇。我认为我在流操作中创建实例是错误的。如果在流操作中更改现有状态,可能会导致并行操作中出现问题。但是,仅创建一个实例并不是在更改状态,因为新实例不会修改旧实例。因此,我认为您所做的是完全可以接受的。因此,我建议我不知道你为什么被否决(这是这次讨论的开始)。因此我改善了情况+1。我只能说与WJS相同,不清楚为什么这个答案被否决。使用
mapToObj
的原始版本很好。我认为,原因是非技术性的。这个问题也被否决了,所以可能有人认为这是一个不好的问题,不应该得到答案一点也不。有这样的人在思考这个问题时会对所有答案投反对票。另一方面,我看不到接近票数的人。所以最后,我们不知道,也不应该浪费太多时间去思考这些投票。。。
List<Employee> employeeList = Stream.iterate(0, n -> n + 1)
                                    .limit(100)
                                    .map(i -> new Employee(i, "a" + i))
                                    .collect(Collectors.toList())