下面的代码段尝试添加100个用户,然后在console中打印。但是我需要使用Instream.range(1,100)...来实现Java 8中的等效循环。
public class UsersMain {
public static void main(String[] args) {
List<Users> users =new ArrayList<>();
for (int i=0;i<=100;i++) {
users.add(new Users());
}
}
}
带构造函数的用户类:
public class Users {
public Users() {
}
}
答案 0 :(得分:2)
it("test my case"){
val oldMap = Map(10 -> Test(10, 1, 2, 1, 2), 25 -> Test(25, 3, 4, 3, 4), 46 -> Test(46, 3, 4, 3, 4), 26 -> Test(26, 1, 2, 1, 2))
val newMap = Map(32 -> Test(32, 5, 6, 5, 6), 26 -> Test(26, 5, 6, 5, 6))
val result = mergeMaps(oldMap, newMap)
//Total elements count should be map 1 elements + map 2 elements
assert(result.size == 5)
//Common key element aggMin and aggMax should be updated, keep min aggMin and max aggMax from 2 common key elements and keep min and max of second map key
assert(result.get(26).get.aggMin == 1)//min aggMin -> min(1,5)
assert(result.get(26).get.aggMax == 6)//max aggMax -> max(2,6)
assert(result.get(26).get.min == 5)// 5 from second map
assert(result.get(26).get.max == 6)//6 from second map
}
您可以使用任何 List<Users> users = IntStream.range(0, 100)
.mapToObj(i -> new Users())
.collect(Collectors.toList());
或range()
方法,两者之间的主要区别是:
rangeClosed()
方法生成一个从起始值开始的数字流 但在达到最终值之前停止,即开始值包含在内 最终值是排他的。示例:range()
生成一个 int类型的“ 1,2,3,4”流。
IntStream.range(1,5)
方法从头开始生成数字流 值,并在生成结束值后停止,即开始值是 包容性和最终价值也包括在内。例:rangeClosed()
生成类型为“ 1,2,3,4,5”的流 长。
答案 1 :(得分:0)
您可以将rangeClosed
和mapToObj
用作:
List<Users> users = IntStream.rangeClosed(0, 100) // rangeClosed for '<='
.mapToObj(i -> new Users()) // would prefer at least an 'index' attribute to distinguish these objects
.collect(Collectors.toList()); // collectin to a list
注意 :尽管以上代码与您的for循环相同,但是如果您要专门添加100个用户,则必须使用range
代替的rangeClosed
。