gpt4 book ai didi

java - 如何提取列表中特定属性的所有元素?

转载 作者:搜寻专家 更新时间:2023-10-31 20:13:24 25 4
gpt4 key购买 nike

我怎样才能最好地获得以下结构的所有“名称”字符串元素:

class Foo {
List<Bar> bars;
}

class Bar {
private String name;
private int age;
}

我的方法是:

List<String> names = new ArrayList<String>();

for (Bar bar : foo.getBars()) {
names.add(bar.getName());
}

这可能行得通,但在 java.Collections 中我可以这样写吗:Collections.getAll(foo.getBars(), "name");?

最佳答案

如果您使用 Eclipse Collections并更改 getBars() 以返回 MutableList 或类似的东西,您可以这样写:

MutableList<String> names = foo.getBars().collect(new Function<Bar, String>()
{
public String valueOf(Bar bar)
{
return bar.getName();
}
});

如果将函数提取为 Bar 上的常量,它会缩短为:

MutableList<String> names = foo.getBars().collect(Bar.TO_NAME);

使用 Java 8 lambda,您根本不需要 Function。

MutableList<String> names = foo.getBars().collect(Bar::getName);

如果您无法更改 getBars() 的返回类型,则可以将其包装在 ListAdapter 中。

MutableList<String> names = ListAdapter.adapt(foo.getBars()).collect(Bar.TO_NAME);

注意:我是 Eclipse 集合的提交者。

关于java - 如何提取列表中特定属性的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14710574/

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