gpt4 book ai didi

java - 使用不同的内部方法调用泛化方法

转载 作者:行者123 更新时间:2023-12-01 17:46:06 26 4
gpt4 key购买 nike

我有两种方法可以从对象的 List 创建 Map:

private Map<String, Foo> getFooMap(List<Foo> oos) {
return foos.stream()
.map(foo -> new AbstractMap.SimpleEntry<>(foo.getText(), foo))
.collect(Collectors.toMap(
AbstractMap.SimpleEntry::getKey,
AbstractMap.SimpleEntry::getValue));
}

private Map<String, Bar> getBarMap(List<Bar> bars) {
return bars.stream()
.map(bar -> new AbstractMap.SimpleEntry<>(bar.getName(), bar))
.collect(Collectors.toMap(
AbstractMap.SimpleEntry::getKey,
AbstractMap.SimpleEntry::getValue));
}

我想创建一个更通用的函数,因为它们基本上是相同的。唯一的区别(除了对象类型之外)是创建键的方法:foo.getText()bar.getName()。有没有一个好的方法可以将这些变成一个单一的方法?

最佳答案

当然,只需传递一个Function即可提取 key 。另外,您不需要中间的 Entry:

static <T, K> Map<K, T> toMap(List<T> list, Function<? super T, K> getKey) {
return list.stream()
.collect(Collectors.toMap(getKey, Function.identity()));
}

你可以这样调用它:

Map<String, Foo> fooMap = toMap(foos, Foo::getText);
Map<String, Bar> barMap = toMap(bars, Bar::getName);

关于java - 使用不同的内部方法调用泛化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55268914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com