Мне нужно проанализировать список отсортированных чисел, а затем выяснить, сколько чисел в последовательности.
List<Integer> sortedNum = Arrays.asList(1, 2, 3, 8, 10);
Так что в этом списке я бы ожидал, что результат будет {1;3},{8;1},{10;1}
.
Без потоков код выглядит так:
Map<Integer, Integer> countMap = new HashMap<>();
int i = 0;
while (true) {
int num = sortedNum.get(i);
int count = 0;
while (i < sortedNum.size()) {
count++;
i++;
if (i == sortedNum.size()) {
break;
}
if ((sortedNum.get(i - 1) + 1) < sortedNum.get(i)) {
break;
}
}
countMap.put(num, count);
if (i == sortedNum.size()) {
countMap.forEach((a, b) -> System.out.println(a + " " + b));
break;
}
}
Возможно ли этопреобразовать это в потоковые операции, перебирая IntStreams?Любая помощь будет оценена.