猿问

Android提取对象数组属性的数组

我想知道是否有一种从自定义类对象数组中提取属性数组的有效方法。例如,如果我有这样的事情:

public class MyClass {
    private Double p1;
    private String p2;
    private MyProperty p3;

    public MyClass() {}}

在某个地方我有一个ArrayList,里面装满了这个类的对象:

ArrayList<MyClass> listOfObjects = new ArrayList<>();

我想获得其中一个属性的列表:

ArrayList<MyProperty> listOfP3 = new ArrayList<>();ArrayList<Double> listOfP1 = new ArrayList<>();

我能想到的只是迭代listOfObjects并将所需的属性逐个复制到一个新数组......有更好的方法吗?

编辑: 如果可能的话,也可以使用Java 7


慕哥9229398
浏览 1206回答 2
2回答

aluckdog

可能最干净的方法是使用Streams。像这样的东西:List<String>&nbsp;listOfP2=&nbsp;listOfObjects.stream().map(x->x.getP2()).collect(Collectors.toList());当然在MyClass中你需要为这些字段添加一个getter。

qq_笑_17

在Java 8及更高版本中,您可以使用streamAPI(如@Amongalen已经回答的那样)。访问方法有不同的可能性:而不是x -> x.getP1()你可以写MyClass::getP1:List<Double> p1List = myObjects.stream().map(MyClass::getP1).collect(Collectors.toList());List<String> p2List = myObjects.stream().map(MyClass::getP2).collect(Collectors.toList());List<MyProperty> p3List = myObjects.stream().map(MyClass::getP3).collect(Collectors.toList());
随时随地看视频慕课网APP

相关分类

Java
我要回答