【发布时间】:2020-07-20 17:05:02
【问题描述】:
我有一个List<Person> 人。我需要迭代一个数字列表并为每个人设置一个自定义数字,例如person.setCustomNumber(),如下所示:
代码如下:
public static void main(String[] args) {
List<Long> customNumnbers = new ArrayList<>();
customNumnbers.add(100000l);
customNumnbers.add(100001l);
customNumnbers.add(100002l);
customNumnbers.add(100003l);
customNumnbers.add(100004l);
customNumnbers.add(100005l);
customNumnbers.add(100006l);
customNumnbers.add(100007l);
customNumnbers.add(100008l);
List<Person> persons = new ArrayList<>();
persons.add(new Person("Robert"));
persons.add(new Person("Jim"));
persons.add(new Person("Mark"));
persons.add(new Person("Beto"));
persons.add(new Person("Reando"));
Map<String, Long> map = new HashMap<>();
List<Long> possibleNumbers = customNumnbers.subList(0, persons.size());
int n = 0;
while(n != possibleNumbers.size()) {
for (int j = 0; j < persons.size(); j++) {
persons.get(j).setCustomNumer(possibleNumbers.get(n));
map.put(persons.get(j).getName(), persons.get(j).getCustomNumer());
n++;
}
}
map.entrySet().stream().forEach(System.out::println);
}
class Person {
private Long id;
private String name;
private Long customNumer;
// relevant constructor, getters and setters
}
我想在 java 流中重写这个逻辑,并为每个 Map<String, Long> 映射返回一个名称和自定义编号的新映射。
【问题讨论】:
-
您的预期输出应该是什么样的?您对流进行了哪些尝试?
-
@Naman 它我正在尝试从中获取地图 Map
,我似乎无法找到方法,如果它是列表中的列表,那么我可以使用 flatMap 但这是两个独立的列表,我需要在第二个循环/流中分配数字。我也使用过 IntStream.range 但我无法从另一个流中访问数字。
标签: java java-stream