gpt4 book ai didi

java - 在 Java 8 中扩展 List

转载 作者:搜寻专家 更新时间:2023-10-30 21:24:51 26 4
gpt4 key购买 nike

我经常想将一个列表映射到另一个列表。例如,如果我有一个人员列表,并且我想要一个他们姓名的列表,我想这样做:

目标

List<Person> people = ... ;

List<String> names = people.map(x -> x.getName());

Java 8 可以实现类似的功能:

Java 8 版本

List<String> names = people.stream()
.map(x -> x.getName())
.collect(Collectors.toList());

但这显然不是那么好。事实上,我认为使用 Guava 更干净:

Guava 版

List<String> names = Lists.transform(people, x -> x.getName());

不过,我确实喜欢链接。那么,我的目标可能实现吗?

我听说有人说 Java 8 默认方法类似于 C# 扩展方法。使用 C# 扩展方法,我可以轻松地向 IEnumerable<T> 添加辅助方法。 :

public static IEnumerable<TRet> Map<T, TRet>(this IEnumerable<T> list, Func<T, TRet> selector)
{
return list.Select(selector);
}

但是我不知道如何使用默认方法扩展现有接口(interface)

此外,这显然是一个微不足道的例子。一般来说,我希望能够扩展 List<T>Iterable<T>使与流 api 交互更容易的接口(interface)。

最佳答案

没有;你不能那样做。

默认方法与扩展方法不同;它们只能在原始界面中定义。

关于java - 在 Java 8 中扩展 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22308823/

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