精品list 元素 分组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精品list 元素 分组相关的知识,希望对你有一定的参考价值。
应用场景
在开发过程中,经常会遇到把一个List集合中的对象按照某个属性进行分组,然后对分组后的结果进行处理的这种情况。 比如,下图按pay_method_type分组展示就是实际开发的场景: ![image.png]
示例
假设存在实体类
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PayMethodVO
/**
* 编号
*/
private Long id;
/**
* 支付方式
*/
private String name;
/**
* 图片
*/
private String pic;
/**
* 支付方式类别
*/
private Long payMethodType;
传统方式
public static void main(String[] args)
List<PayMethodVO> payMethodVOList = .....;
Map<Long,List<PayMethodVO>> payMethodVOListMap = new HashMap<>();
for (PayMethodVO payMethodVO : payMethodVOList)
List<PayMethodVO> tmp = payMethodVOListMap.get(payMethodVO.getPayMethodType());
if(tmp == null)
tmp = new ArrayList<>();
tmp.add(payMethodVO);
payMethodVOListMap.put(payMethodVO.getPayMethodType(), tmp);
System.out.println(map);
采用流的方式:使用Collectors.groupingBy
public static void main(String[] args)
//支付方式
List<PayMethodVO> payMethodVOList = .....;
Map<Long, List<PayMethodVO>> map = payMethodVOList.stream().collect(Collectors.groupingBy(PayMethodVO::getPayMethodType));
System.out.println(map);
两种方式效果完全一致。
以上是关于精品list 元素 分组的主要内容,如果未能解决你的问题,请参考以下文章