如何获取某个属性的值列表

时间:2016-03-08 07:30:28

标签: java android arraylist

我希望在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>HowCanI和{{},则可以更轻松地使用Get打印值1}}。

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();
    }
});