Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用迭代循环分配Java列表的子集_Java_List - Fatal编程技术网

不使用迭代循环分配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());