小编Ond*_*dra的帖子

类型安全地创建要传递给Comparator.comparing()的Function实例

假设我有一个带有以下签名的方法:

<T, U extends Comparable<? super U>> Comparator<T> method(Map<String, Function<? super T, ? extends U>> comparatorFunctionMap)
Run Code Online (Sandbox Code Playgroud)

该方法接受函数映射(使用字符串键)并创建Comparator<T>一个结果(如何重要).映射值是实例Function<? super T, ? extends U>,因此可以直接传递给它们Comparator.comparing().

如何以类型安全的方式填充此地图?说我有一类Person具有属性nameage(他们和getter).

当我执行以下操作时:

Map<String, Function<? super Person, ? extends Comparable>> map1 = new HashMap<>();
map1.put("name", Person::getName);
method(map1);
Run Code Online (Sandbox Code Playgroud)

我在第1行和第3行收到警告.如果我尝试这样做,例如:

Map<String, Function<? super Person, ? extends Comparable<?>>> map2 = new HashMap<>();
map2.put("name", Person::getName);
method(map2);
Run Code Online (Sandbox Code Playgroud)

第三行是编译错误.

有没有办法安全地做这种类型?

java

7
推荐指数
1
解决办法
92
查看次数

减少 JavaScript 中生成器提供的一系列项目

假设我有一系列项目,我想通过myReducer函数(无论它是什么)执行归约操作。如果我的项目在一个数组中(比如myArray),这很容易:

myArray.reduce(myReducer);
Run Code Online (Sandbox Code Playgroud)

但是,如果我的序列非常大并且我不想分配所有它的数组,只是为了立即逐项减少它怎么办?我可以为我的序列创建一个生成器函数,这部分很清楚。有没有一种直接的方法来执行减少?我的意思是除了自己为生成器编写 reduce 功能之外。

javascript reduce generator

6
推荐指数
1
解决办法
624
查看次数

标签 统计

generator ×1

java ×1

javascript ×1

reduce ×1