Дано - входящий массив; из которого нужно убрать все дубликаты и вернуть число, состоящее из оставшихся чисел массива. Реализовать нужно через Stream.
Пример - вошел массив {1, 2, 3, 2, 2, 3}
- вернулось число 123
.
Текущая реализация:
private static int minValue(int[] array) {
int[] noDuplicates = IntStream.of(array).distinct().toArray();
int result = 0;
for (int i = noDuplicates.length - 1, n = 0; i >= 0; --i, n++) {
int pos = (int) Math.pow(10, i);
result += noDuplicates[n] * pos;
}
return result;
}
Но нужно реализовать через один лишь Stream, без использования циклов. Точнее, используя терминальные операции, которые сводят stream чисел в одно число по заданному алгоритму. Прошу подсказать, как это реализовать
Как-то так?
Arrays.asList(1, 2, 3, 2, 2, 3).stream().distinct().map(Object::toString).collect(Collectors.joining()); // вернёт 123
Если результат нужен именно как int
:
int res = Integer.valueOf(Arrays.asList(1, 2, 3, 2, 2, 3).stream().distinct().map(Object::toString).collect(Collectors.joining()));
Если без строк, то можно как-то так:
int res = Arrays.asList(1, 2, 3, 2, 2, 3)
.stream()
.distinct()
.reduce(0, (a,b) -> (a + b * (int)(a == 0 ? 1 :Math.pow(10, (int) (Math.log10(a) + 1)))));
Только на выходе будет 321
. Остаётся только перевернуть.
int result = Stream.of(1, 2, 3, 2, 2, 3)
.distinct()
.reduce(0, (a,b) -> 10 * a + b);
Результат: 123
.
Но это только для чисел меньших 10-ти, для чисел больших 10-ти немного сложнее:
int result = Stream.of(1, 123, 2, 3, 22, 2, 2, 3, 22, 10)
.distinct()
.reduce(0, (a,b) -> (int)Math.pow(10, (int)(Math.log10(b) + 1)) * a + b);
Результат: 1123232210
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Функция TestRestTemplatewithBasicAuth() не работает В настройках доступ ко всем ендпоинтам открыт
У меня есть некий "Кликер Монет"Но если нажать один раз на кнопку, то в будущем можно будет просто зажать клавишу Enter и счётчик монет будет...
Возможно ли по средствам JavaScript отследить что пользователь зашел на старицу с уже открытой панелью разработчика DevTools ? (не только для Chrome но и для...