将List <object [] =“”>拆分为List <string>的最有效方法

时间:2017-11-12 19:55:23

标签: java list arraylist

大家好我正在使用JPA,并且下面有这样的查询:

Select emp.aid, emp.surname from employees emp

查询将记录存储在List<Object []>列表中。

如果emp.aid是一个长整数而emp.surname是一个String,那么从结果中获取两个列表的最有效方法是什么。一个是List<Integer>,另一个是List<String>

两者中的订单必须在拆分过程中保持同步。这样做表现最明智的方法是什么?

1 个答案:

答案 0 :(得分:2)

我不会有两个包含关联元素的列表,而是创建一个包含两个字段(Employeeid)的surname类,而不是存储从中返回的每个记录查询到Object[]为每个返回的记录构造一个新的Employee对象,提供适当的数据。

这样你甚至不需要处理处理List<Object[]>的复杂性,然后确保当它被分成两个不同类型的列表时,每个id的{​​{1}}整数列表必须与String列表中的name位于同一位置。

但是,如果您希望继续使用当前的方法,可以执行以下操作:

List<Integer> idList = tempList.stream()                                   
                               .map(e -> (Integer)e[0]).collect(Collectors.toList());

和相应的名称:

List<String> nameList = tempList.stream()                                  
                                .map(e -> (String)e[1]).collect(Collectors.toList());

其中tempList定义为List<Object[]> tempList