在不使用迭代循环

时间:2017-08-05 04:03:50

标签: java list

我有一个包含属性列表的类

class First {
    private int B;
    private int C;
    private int D;
    private int E;
...
}

然后,我有第二个类,它是第一个

的子集
class Second {
    private int C;
    private int D;
    }

我想做的是:

List<Second> = List<First> 

换句话说,第二个列表是第一个列表的子集。我想做的是一个无需循环或使用“添加”语句的作业。

这可能吗?

TIA

更新  我忘了提到具有更多字段/属性的类是一种“实体”类,其目的是将数据提取/保存到数据库。 Java文件本身是由Hibernate创建的,并且该类的每个字段/属性都与数据库中的字段匹配。具有子类型2类的原因是具有较少数量的字段/属性(即子集)的那个用于REST目的(即来回发送数据)。

2 个答案:

答案 0 :(得分:3)

您可以使用继承:

class Second {
    int c, d;
    public int getC() { return c; }
    public int getD() { return d; }
}

class First extends Second {
    int a, b;

    public int getA() { return a; }
    public int getB() { return b; } 
}

public static void main(String[] args) {
    List<First> firstList = new ArrayList<>();
    List<? extends Second> secondList = firstList;
}

答案 1 :(得分:1)

如果您为Second提供一个带First参数的构造函数(并将字段显示为Second或添加可见的getter),例如

class Second {
    public Second(First a) {
        this.C = a.C;
        this.D = a.D;
    }

    private int C;
    private int D;
}

如果您使用的是Java 8+,则可以将List类型的Firstmap转换为Second类似

List<First> firsts = new ArrayList<>();
// ...
List<Second> al = firsts.stream().map(Second::new).collect(Collectors.toList());