关于Guava集合包
Guava提供了丰富的集合包,对于业务操作非常友好,本篇文章对比使用Guava集合包和不适用Guava集合包,看看Guava集合包给我们集合操作带来了哪些便利。
集合处理中的应用
对List<对象>进行分组
业务介绍:有一个订单列表,里面包含多个用户的多个订单,我们需要对按照用户对订单列表进行分组
应用类
ArrayListMultimap, 当然Guava还提供了LinkedListMultimap,api类似,只是存放值的集合换成了LinkedList
实现对比
/**
* 订单实体
*/
public class Order {
private String userId;
private String orderId;
private Double price;
private Date createTime;
private Date updateTime;
}
public class Test {
/**
* 自己实现分组
*/
public void group(List<Order> orderList) {
Map<String, List<Order>> userOrdersMap = new HashMap<>();
for(Order order: orderList) {
String userId = order.getUserId();
if(userOrdersMap.containsKey(userId)) {
userOrdersMap.get(userId).add(order);
} else {
List<Order> orders = new ArrayList<>();
orders.add(order);
userOrdersMap.put(user, orders);
}
}
}
/**
* 使用Guava进行分组分组
*/
public void guavaGroup(List<Order> orderList) {
ArrayListMultimap<String, Order> arrayListMultimap = ArrayListMultimap.create();
orderList.forech(e -> arrayListMultimap.put(e.getUserId(), e));
// ArrayListMultimap 常用API asMap() get(key)返回值为List<T>
}
}
结论
查看Guava源码