整理一些关于Java8集合的操作,有时间再慢慢更新内容
示例类 TagInfo
@Data
public static class TagInfo {
/**
* 标签代码
*/
private String tagNo;
/**
* 标签名称
*/
private BigDecimal tagName;
/**
* 类别
*/
private String classType;
}
List转Map<String, TagInfo>
// 标签代码 为key值
Map<String, TagInfo> = list.stream().collect(
Collectors.toMap(item -> item.getTagNo(), Function.identity(), (v1, v2)->v1)
);
// 标签代码+标签名称 为key值
Map<String, TagInfo> = list.stream().collect(
Collectors.toMap(item -> item.getTagNo() + item.getTagName(), Function.identity(), (v1, v2)->v1)
);
List过滤后取第一个
list.stream().filter(ele->classType.equals(ele.getClassType())).findFirst().get();
List中筛选出符合条件的数据
List<TagInfo> findList = list.stream()
.filter(item -> "绘画".equals(item.getClassType()))
.collect(Collectors.toList());
List中筛选出符合条件的数据,从集合中取出指定字段,并且去重,组合成新的集合
例如:取出所有拥有绘画类型的标签代码
List<String> findList = list.stream()
.filter(item -> "绘画".equals(item.getClassType()))
.map(TagInfo::getTagNo)
.distinct()
.collect(Collectors.toList());
List中取得所有标签代码
List<Integer> findList = list.stream()
.map(TagInfo::getTagNo)
.collect(Collectors.toList());
List根据标签代码进行分组
Map<String, List<TagInfo>> map = list.stream().collect(
Collectors.groupingBy(item -> item.getTagNo())
);