我希望在ArrayList
内有一个对象的某个属性的值列表。假设我有这样一个类:
public class Foo {
private String b, a, r;
//Constructor...
//Getters...
}
然后我创建了一个ArrayList<Foo>
:
ArrayList<Foo> fooList = new ArrayList<>();
fooList.add(new Foo("How", "Hey", "Hey"));
fooList.add(new Foo("Can", "Hey", "Hey"));
fooList.add(new Foo("I", "Hey", "Hey"));
fooList.add(new Foo("Get", "Hey", "Hey"));
fooList.add(new Foo("Those?", "Hey", "Hey"));
在ArrayList<Foo>
中,是否可以获取Foo
的某个属性的列表,而无需使用ArrayList
循环遍历for
?也许在Objective-c中与valueforkey相似的东西。如果我的TextUtils.join()
包含ArrayList<String>
,How
,Can
,I
和{{},则可以更轻松地使用Get
打印值1}}。
答案 0 :(得分:1)
使用Java 8,您可以流式传输,映射和收集:
List<String> list = fooList.stream()
.map(Foo::getProp)
.collect(Collectors.toList());
如果您有Guava,您可以像这样获得列表的转换视图:
List<String> list = Lists.transform(fooList, Foo::getProp);
Java 7版本:
List<String> list = Lists.transform(fooList, new Function<Foo, String>() {
@Override
public String apply(Foo foo) {
return foo.getProp();
}
});