老师,我的为什么不行?
来源:3-26 实战案例二:去重

小蜗牛有大理想
2020-05-12
package com.imooc.zhangxiaoxi.stream.cases;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
/**
* 类名称:CaseTwo
* ********************************
* <p>
* 类描述:案例二
* 重点讲解:filter和distinct的使用方式
*
* @author zhangxiaoxi
* @date 下午9:39
*/
public class CaseTwo {
/**
* 用户请求的创建标签模型
*/
/*@Data
@AllArgsConstructor*/
class TagReqDTO {
/**
* 标签名字
*/
private String name;
/**
* 标签值:年龄
*/
private Integer age;
@Override
public String toString() {
return "TagReqDTO{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public TagReqDTO(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
/**
* 从DB中查询出来的已经存在的标签名
*/
List<String> tagListFromDB;
/**
* 用户请求的标签列表
*/
List<TagReqDTO> tagListFromReq;
@Before
public void init() {
// 数据库中存在的标签名列表
tagListFromDB = Lists.newArrayList(
"李四", "王五", "赵六");
// 用户提交的
tagListFromReq = Lists.newArrayList(
new TagReqDTO("张三", 10),
new TagReqDTO("李四", 30),
new TagReqDTO("张三", 10));
}
@Test
public void distinctTag() {
tagListFromReq.stream()
.filter(tag->!tagListFromDB.contains(tag.getName()))
.distinct()
.forEach(tag->System.out.println("添加标签为"+tag));
}
}
```
写回答
1回答
-
应该是没有重写equals方法造成的,distinct去重那一步没有成功,你要不加个equals方法?或者把你自己写的那些getset都删了,用lombok的@Data
122020-05-20
相似问题