业务描述:
标签管理功能模块。
允许用户批量添加标签,后台需要对标签进行去重,
并且要防止数据库中存在同名的标签。
public class Case_2 {
public static void main(String[] args) {
@Data
@AllArgsConstructor
class TagReqDTO {
/**
* 标签名字
*/
private String name;
/**
* 标签值:年龄
*/
private Integer age;
}
/**
* 从DB中查询出来的已经存在的标签名
*/
List<String> tagListFromDB = Lists.newArrayList(
"李四", "王五", "赵六");
/**
* 用户请求的标签列表
*/
List<TagReqDTO> tagListFromReq = Lists.newArrayList(
new TagReqDTO("张三", 10),
new TagReqDTO("李四", 30),
new TagReqDTO("张三", 10));
tagListFromReq.stream()
.filter(tagReqDTO -> !tagListFromDB.contains(tagReqDTO.getName()))
.distinct()
.forEach(System.out::println);
}
}
filter
中的test
方法返回true
代表当前元素会保留下来。
举例:
库存List.stream()
.filter(sku -> SkuCategoryEnum.BOOKS.equals(sku.getSkuCategory()))
库存里类型和枚举类中book类型【一样】的就会被保留下来
外部传进的请求.stream()
.filter(tagReqDTO -> !tagListFromDB.contains(tagReqDTO.getName()))
请求里名字【不等于】数据库里有的名字就会被保留下来