不使用迭代循环分配Java列表的子集
我有一个具有属性列表的类不使用迭代循环分配Java列表的子集,java,list,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> List=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>
List=List
换句话说,第二个列表是第一个列表的子集。我想做的是一个赋值,而不必经过循环或使用“add”语句
这可能吗
短暂性脑缺血发作
更新
我忘了提到字段/属性数较多的类是一种“实体”类,其目的是获取/保存数据到数据库。Java文件本身是由Hibernate创建的,类的每个字段/属性都与数据库中的一个字段相匹配。拥有2类子集的原因是,字段/属性数量较少的类(即子集)用于REST目的(即来回发送数据) 您可以使用继承:
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;
}
第二类{
int c,d;
public int getC(){return c;}
public int getD(){return d;}
}
第一类扩展第二类{
INTA,b;
public int getA(){return a;}
public int getB(){return b;}
}
公共静态void main(字符串[]args){
List firstList=新建ArrayList();
列表您可以使用继承:
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;
}
第二类{
int c,d;
public int getC(){return c;}
public int getD(){return d;}
}
第一类扩展第二类{
INTA,b;
public int getA(){return a;}
public int getB(){return b;}
}
公共静态void main(字符串[]args){
List firstList=新建ArrayList();
如果给Second
一个构造函数,该构造函数接受第一个
参数(并使字段对Second
可见或添加可见的getter),请列出,如下所示
如果您使用的是Java 8+,您可以将第一个类型的列表,以及映射到第二个,如
List firsts=new ArrayList();
// ...
List al=firsts.stream().map(Second::new.collect(Collectors.toList());
如果给Second
一个构造函数,该构造函数接受第一个
参数(或者使字段对Second
可见,或者添加可见的getter),如
如果您使用的是Java 8+,您可以将第一个类型的列表,以及映射到第二个,如
List firsts=new ArrayList();
// ...
List al=firsts.stream().map(Second::new.collect(Collectors.toList());
CompilerHanks永远不会允许此分配!现在使用Java 1.7,有机会时想尝试1.8选项。编译器Hanks永远不会允许此分配!现在使用Java 1.7,有机会时想尝试1.8选项。谢谢!-我用它做了一些初步测试,看起来很不错it’好像它能完成任务:-)谢谢!-我用这个做了一些初步的测试,看起来它能完成任务:-)
List<First> firsts = new ArrayList<>();
// ...
List<Second> al = firsts.stream().map(Second::new).collect(Collectors.toList());