Java 从关键帧流生成贴图

Java 从关键帧流生成贴图,java,dictionary,functional-programming,java-stream,Java,Dictionary,Functional Programming,Java Stream,我知道我可以初始化一个流,然后使用流填充它。例如,这里我使用一组随机数填充预定义映射的键 int initialCapacity = 3; Map < Integer, UUID > map = new HashMap <>( initialCapacity ); IntStream numbers = ThreadLocalRandom.current().ints( initialCapacity ); numbers.forEach( number -> m

我知道我可以初始化一个流,然后使用流填充它。例如,这里我使用一组随机数填充预定义映射的键

int initialCapacity = 3; 
Map < Integer, UUID > map = new HashMap <>( initialCapacity );
IntStream numbers = ThreadLocalRandom.current().ints( initialCapacity );
numbers.forEach( number -> map.put( number , UUID.randomUUID() ) );
map={14054365=ee739423-1200-45e6-80da-d167ce2e2b98,-1079671217=ba0096fe-b32f-4ebf-a163-114fcb679992,-404094411=f900052b-8a8d-4e66-b808-618fbc7e115f}

➥ 我想知道是否有办法让流生成
Map
对象,而不是填充预先存在的Map

我不在乎这是不是明智的做法。我只是好奇语法和如何使用

我知道这些方法。但我似乎无法正确地完成语法或语义。我猜
Function.identity()
是使用
IntStream
生成的每个数字作为键的正确方法。然后我尝试
UUID.randomuid()
p->UUID.randomuid()
为每个映射条目生成值

int initialCapacity = 3;
Map < Integer, UUID > map =
        ThreadLocalRandom
                .current()                              // Returns a random number generator.
                .ints( initialCapacity )                // Returns an `IntStream`. 
                .collect(
                        Collectors.toMap(
                                Function.identity() ,   // Generate map key (?)
                                x -> UUID.randomUUID()  // Generate map value (?)
                        )
                );
int initialCapacity=3;
MapMap=
线程本地随机
.current()//返回一个随机数生成器。
.ints(initialCapacity)//返回一个“IntStream”。
.收集(
汤姆(
Function.identity(),//生成映射键(?)
x->UUID.randomUUID()//生成映射值(?)
)
);
但是我在IDE中得到一个错误,它说:

应为3个参数,但找到1个


我找到了带有两个参数的
collector.toMap
示例,一个用于键,一个用于值,以生成每个映射条目。因此,我不明白为什么坚持使用方法调用的第三个参数。

IntStream
只有一个参数,它需要3个参数。我猜你是在找那个人

了解
IntStream
生成的是原始
int
数字流,而不是
Integer
对象流

调用
.boxed()
调用(请参阅)将每个基元
int
包装为一个
Integer
对象。这将生成
,而不是
IntStream

Map < Integer, UUID > map =
    ThreadLocalRandom
            .current()
            .ints( initialCapacity )
            .boxed()                                // Add this call
            .collect(
                    Collectors.toMap(
                            Function.identity() ,
                            x -> UUID.randomUUID()
                    )
            );
MapMap=
线程本地随机
.current()
.ints(初始容量)
.boxed()//添加此调用
.收集(
汤姆(
Function.identity(),
x->UUID.randomUUID()
)
);

@AndyTurner宾果游戏!成功了。请回答一下,让我接受。或者也许我的问题是重复的?对不起,你在想什么
Map < Integer, UUID > map =
    ThreadLocalRandom
            .current()
            .ints( initialCapacity )
            .boxed()                                // Add this call
            .collect(
                    Collectors.toMap(
                            Function.identity() ,
                            x -> UUID.randomUUID()
                    )
            );