java高效去重判断_高效 告别996,开启java高效编程之门 3-26实战案例二:去重

packagecom.imooc.zhangxiaoxi.stream.cases;importcom.google.common.collect.Lists;importlombok.AllArgsConstructor;importlombok.Data;importorg.junit.Before;importorg.junit.Test;importjava.util.List;/*** 类名称:CaseTwo

* ********************************

*

* 类描述:案例二

* 重点讲解:filter和distinct的使用方式

*

*@authorzhangxiaoxi

* @date 下午9:39*/

public classCaseTwo {/*** 用户请求的创建标签模型*/

/*@Data

@AllArgsConstructor*/

classTagReqDTO {/*** 标签名字*/

privateString name;/*** 标签值:年龄*/

privateInteger age;

@OverridepublicString toString() {return "TagReqDTO{" +

"name='" + name + '\'' +

", age=" + age +

'}';

}publicTagReqDTO(String name, Integer age) {this.name =name;this.age =age;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}publicInteger getAge() {returnage;

}public voidsetAge(Integer age) {this.age =age;

}//重写equals要实现hachCode()

@Override

public int hashCode() {final int prime = 31;int result = 1;

result= prime * result + ((name == null) ? 0: name.hashCode());

result= prime * result +age;returnresult;

}//第三步

@Override

public boolean equals(Object obj) {if (this == obj) //判断对象地址是否相等,如果是就不用判断,提高效率

return true;if (obj == null) //对象为空,则不往下走了

return false;if (getClass() != obj.getClass()) //判断两个对象是否一样:

return false;

TagReqDTO tag= (TagReqDTO) obj; //向下转型

/**判断成员变量是否一样*/

if (age !=tag.age)return false; //判断年龄,int类型,直接比较//String类型,equals()比较

if (name == null) {if (tag.name != null)return false;

}else if (!name.equals(tag.name))return false;return true;

}

}/*** 从DB中查询出来的已经存在的标签名*/ListtagListFromDB;/*** 用户请求的标签列表*/ListtagListFromReq;

@Beforepublic voidinit() {//数据库中存在的标签名列表

tagListFromDB =Lists.newArrayList("李四", "王五", "赵六");//用户提交的

tagListFromReq =Lists.newArrayList(new TagReqDTO("张三", 10),new TagReqDTO("李四", 30),new TagReqDTO("张三", 11));

}

@Testpublic voiddistinctTag() {

TagReqDTO a= new TagReqDTO("1",1);

TagReqDTO b= new TagReqDTO("1",11);

System.out.println("a===b为"+a.equals(b));

tagListFromReq.stream()

.filter(tag->!tagListFromDB.contains(tag.getName()))

.distinct()

.forEach(tag->System.out.println("添加标签为"+tag));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值