老师,我的为什么不行?

来源: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));
    }

}

```![图片描述](http://img.mukewang.com/szimg/5eb9ced10968cd1713660768.jpg)

写回答

1回答

乃好

2020-05-12

应该是没有重写equals方法造成的,distinct去重那一步没有成功,你要不加个equals方法?或者把你自己写的那些getset都删了,用lombok的@Data

1
2
MarcoLiLiLi
我试了一下, 还得重写一下hashCode()才行。
2020-05-20
共2条回复

Java高效编程技巧实践 告别996

可以改变的编程效率

1451 学习 · 326 问题

查看课程