我有以下代码来实现这个要求,但无法解决使用流,我不知道如何在管道中增加i
String[] str = {"a","b","c","d","e","f"};
Map<String, String> strMap = new HashMap<>();
int i = 0;
while(i< str.length && i +1 < str.length) {
strMap.put(str[i],str[i+1]);
i +=2;
}
答案 0 :(得分:4)
您无法使用简单的str
流进行此操作,但您可以使用索引流模仿循环:
Map<String, String> strMap = IntStream.range(0, str.length - 1)
.filter(i -> i % 2 == 0)
.boxed()
.collect(Collectors.toMap(i -> str[i], i -> str[i + 1]));
答案 1 :(得分:3)
这有点像黑客攻击,但您可以使用IntStream
生成索引(在0
和数组长度之间),过滤掉奇数索引,然后使用{{ 1}}填充forEach
- 喜欢,
strMap
哪些输出(根据要求)
String[] str = { "a", "b", "c", "d", "e", "f" };
Map<String, String> strMap = new HashMap<>();
IntStream.range(0, str.length).filter(i -> i % 2 == 0)
.forEach(i -> strMap.put(str[i], str[i + 1]));
System.out.println(strMap);