3 回答

TA贡献1875条经验 获得超3个赞
如果您使用 java 8,则应该尝试使用流 api。
考虑到 DTO 的构造函数有一个String参数。
List<Object[]> listChild = query.list();
List<ChildrenDTO> children = listChild.stream().map(x -> new ChildrenDTO(x[0].toString())).collect(Collectors.toList());

TA贡献1831条经验 获得超10个赞
因此,首先,您要遍历包含对象数组的 List。
因此,要获取每个单独的对象,您需要有一个嵌套循环,例如:
for (Object[] org : listOrg) {
for (int i = 0; i < org.length; i++) {
if (org[i] instanceof ChildrenDTO) {
listOfDTO.add((ChildrenDTO) org[i]);
}
}
}
我不是 100% 确定您是否可以将对象强制转换为 ChildrenDTO 对象,但如果不能,您可以只获取对象值并创建一个新的 ChildrenDTO 实例,也许是一个构造函数来获取对象值?

TA贡献1836条经验 获得超4个赞
您可以使用Java 8 流 API:
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());
添加回答
举报