我想知道是否有一种从自定义类对象数组中提取属性数组的有效方法。例如,如果我有这样的事情: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
2 回答

aluckdog
TA贡献1847条经验 获得超7个赞
可能最干净的方法是使用Streams。像这样的东西:
List<String> listOfP2= listOfObjects.stream().map(x->x.getP2()).collect(Collectors.toList());
当然在MyClass中你需要为这些字段添加一个getter。

qq_笑_17
TA贡献1818条经验 获得超7个赞
在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());
添加回答
举报
0/150
提交
取消