Я хочу создать List<String>
с числовыми значениями от 72-129 и 132-200.Я думал об использовании IntStream
и отображении значений в строки и сбор в список.Я использовал этот код:
List<String> strings72to200 = Stream
.concat(Stream.of(IntStream.range(72, 129)), Stream.of(IntStream.range(132, 200)))
.map(e -> String.valueOf(e)).collect(Collectors.toList());
Однако, если я отлаживаю фактические значения strings72to200
, я получаю это:
[java.util.stream.IntPipeline$Head@56d13c31, java.util.stream.IntPipeline$Head@5f9127c5]
Я считаю, что Stream.concat()
, а также.map()
вызывает это, так как у меня есть рабочий фрагмент кода, подобный следующему:
List<String> strings50to59 = IntStream.range(50, 60).mapToObj(e -> String.valueOf(e))
.collect(Collectors.toList());
Обратите внимание, что этот фрагмент использует .mapToObj()
вместо .map()
.
Итак, вопрос в том, как я могу создать список с этими значениями (обратите внимание на первоначальное разделение) через потоки (поскольку это кажется более плавным, чем цикл)?Должен ли я создать полный список и впоследствии удалить ненужные элементы (это невозможно при больших разрывах)?