Java 转换列表<;对象[]>;列出<;MyClass>; List listChild=query.List(); List ListOfTo=新建ArrayList(); //循环遍历对象的ArrayList 对于(对象[]组织:列表组织){ //如何将对象列表强制转换为ist? listOfDTO.add(org); }

Java 转换列表<;对象[]>;列出<;MyClass>; List listChild=query.List(); List ListOfTo=新建ArrayList(); //循环遍历对象的ArrayList 对于(对象[]组织:列表组织){ //如何将对象列表强制转换为ist? listOfDTO.add(org); },java,Java,我正在遍历一个对象列表,需要返回ListTo。 如何将列表转换为列表 首先,您要遍历一个包含对象数组的列表 因此,要获取每个单独的对象,需要有一个嵌套循环,类似于: List<Object[]> listChild = query.list(); List<ChildrenDTO> listOfDTO = new ArrayList<>(); //Loop through arraylits of object for(Object[] org: l

我正在遍历一个对象列表,需要返回ListTo。 如何将列表转换为列表


首先,您要遍历一个包含对象数组的列表

因此,要获取每个单独的对象,需要有一个嵌套循环,类似于:

 List<Object[]> listChild = query.list();
 List<ChildrenDTO> listOfDTO = new ArrayList<>();

 //Loop through arraylits of object
 for(Object[] org: listOrg){
      //How to cast List of object to ist<ChildrenDTO>?
     listOfDTO.add(org);
 }
for(对象[]组织:列表组织){
for(int i=0;i

我不能100%确定是否可以将一个对象强制转换为ChildrenDTO对象,但如果不能,您可以获取对象值并创建一个新的ChildrenDTO实例,可能是一个构造函数来获取对象值?

首先,您必须编写一个方法,将oneobject[]转换为oneChildrenDTO,例如,构造函数:

        for (Object[] org : listOrg) {
        for (int i = 0; i < org.length; i++) {
            if (org[i] instanceof ChildrenDTO) {
                listOfDTO.add((ChildrenDTO) org[i]);
            }
        }
    }
然后,您可以使用以下命令创建这些DTO的列表:

public ChildrenDTO(Object [] objects) {
    // Your code here
}
List listOfDTO=listChild.stream()
.map(ChildrenDTO::新建)
.collect(Collectors.toList());

如果您使用java 8,您应该尝试使用流api

考虑到DTO的构造函数有一个
String
param

List listChild=query.List();
List children=listChild.stream().map(x->new ChildrenDTO(x[0].toString()).collect(Collectors.toList());
您可以使用Java 8流API:

List listChild=。。。
List childrenDtos=listChild.stream()
.flatMap(数组::流)
.filter(object->Objects.equals(object.getClass(),ChildrenDTO.class))
//.filter(对象->ChildrenDTO的对象实例)
//而不是Objects.equals(类,类),如果需要
.map(对象->(ChildrenDTO)对象)
.collect(Collectors.toList());

您不进行强制转换,而是进行转换,也就是说,您在
org
中获取值,并构建
ChildrenDTO
的实例。如何实现这一点取决于代码的其余部分,我将把它作为练习留给您。您将无法做到这一点,因为数组对象不可能是非数组类型。我尝试使用dthos代码,但列表返回null,而query.list返回值。
    List<ChildrenDTO> listOfDTO = listChild.stream()
            .map(ChildrenDTO::new)
            .collect(Collectors.toList());
List<Object[]> listChild = ...
List<ChildrenDTO> childrenDtos = listChild.stream()
        .flatMap(Arrays::stream)
        .filter(object -> Objects.equals(object.getClass(),ChildrenDTO.class))
        //.filter(object -> object instanceof ChildrenDTO) 
        //instead of Objects.equals(class, class), if required
        .map(object -> (ChildrenDTO)object)
        .collect(Collectors.toList());