Как правильно заменить цикл for на stream в данном коде
Мне нужно переписать цикл в методе convertArrayToMapWithKeysAndValues через stream, но не понимаю как правильно это сделать.
private static String[] keysAndValuesList = new String[] {
"-i", "in.txt", "--limit", "40", "-d", "1", "-o", "out.txt"
};
public static Map<String, String> convertArrayToMapWithKeysAndValues() {
Map<String, String> convertArray = new HashMap<>();
for (int i = 0; i < keysAndValuesList.length;) {
convertArray.put(keysAndValuesList[i], keysAndValuesList[i + 1]);
i += 2;
}
return convertArray;
}
Ответы (1 шт):
Автор решения: Alexandr
→ Ссылка
Можно так:
public static Map<String, String> convertArrayToMapWithKeysAndValues() {
return IntStream.range(0, keysAndValuesList.length / 2)
.boxed()
.collect(
Collectors.toMap(
i -> keysAndValuesList[i * 2],
i -> keysAndValuesList[i * 2 + 1]));
}