IntStream
Ваш вопрос неясен относительно типов данных и того, должно ли значение записей карты быть нулевым. Я предполагаю простой случай Integer
ключей и нулевых значений.
Поток заполняет карту
Классы Random
и ThreadLocalRandom
теперь предлагают ints
метод. Этот метод возвращает поток чисел, в частности IntStream
.
int initialCapacity = 3; // 16_200 or 64_800 or 259_200.
Map < Integer, UUID > map = new HashMap <>( initialCapacity );
IntStream numbers = ThreadLocalRandom.current().ints( initialCapacity );
numbers.forEach( number -> map.put( number , null ) ); // Auto-boxing wraps the primitive `int` as an `Integer` object.
Дамп на консоль.
System.out.println( map );
При запуске.
{837992347 = ноль, 1744654283 = ноль, -393617722 = ноль}
Поток создает карту
Вы могли бы даже сделать из этого одну строчку, попросив поток создать экземпляр Map
, а не предварительно инициализировать его.
Я не предполагаю, что это лучше, но это немного интересно. Мне пришлось попросить Создать карту из IntStream ключей , чтобы узнать, как это сделать.
Map < Integer, UUID > map =
ThreadLocalRandom
.current() // Returns a random number generator.
.ints( 3 ) // Produces three random numbers, the limit being the number passed here.
.boxed() // Invokes auto-boxing to wrap each primitive `int` as an `Integer` object.
.collect( // Gathers the outputs of this stream into a collection.
Collectors.toMap( // Returns a `Collector`, a collector that knows how to produce a `java.util.Map` object.
Function.identity() , // Returns each `Integer` produced by the stream. No further actions needed here, we just want the number.
number -> UUID.randomUUID() // Generate some object to use as the value in each map entry being generated. Not important to this demo.
) // Returns a `Collector` used by the `collect` method.
); // Returns a populated map.
map.toString (): {1996421820 = bbb468b7-f789-44a9-bd74-5c3d060081d0, -717171145 = 7bd89a89-8b04-4532-82ae-437788378814, 996403745 = 696403745 = 359633745 4a09-8644-59d846a815d4}
Этот подход потока-экземпляров-карт является неправильным путем к go, если вы хотите выбрать конкретный класс, реализующий Map
.