在平时的编程过程中,list和map是集合中最常遇到的两种,熟练使用这两种集合是程序员必须具备的技能,list转map的应用常见也是很常遇到的,结合我最近的一个使用场景说一下:
比如我们需要这样的数据 a.id ,a.name b.role 这样的数据,显然这是存在两张表中的,一般我们设计到大数据量的情况下是不会采用连表查询的,连表查询很慢,这个就不多讲了吧。这样我们可以采用批量查询,在a表中查询 a.id ,a.name ,在b表中查询b.id(对应a.id) ,然后封装在两个list中,我们将bList转换为bListMap,在循环中通过key是id相同的,将b.role和a.id,a.name封装在返回类型的bean中。
批量查询的优点还是很明显的,在两个表都是几十万的数据量的情况下,批量查询的时间要比连表查询或者循环查询的时间节省了大概7倍或8倍,这是我亲测的。其中list转map扮演着很重要的角色。将批量查询出的结果在代码层进行组装,还是很快的,因为map的底层是走hash的。而且节省了查库的io请求时间,所以,还是比较快的。
下面是一些具体的使用demo
package test;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Apple {
private Integer id;
private String name;
private BigDecimal money;
private Integer num;
public A