Java 中的 Set 集合中不能储存重复元素,故经常用来进行去重操作,但是在实际操作中,我们发现 Set 集合并不能判断对象是否重复,故无法对对象直接进行去重;不过我们可以通过将对象转换成 String 存入 Set 中进行去重操作后再取出转回对象,以此达到去重的目的。

一. 引入依赖

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.41</version>
        </dependency>

二. 直接放入 Set 中

1. 新建 UserTest 类

  也可以直接用Object类取

package com.example.demo.bean;

public class UserTest {

    private String userName;

    private String interest;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getInterest() {
        return interest;
    }

    public void setInterest(String interest) {
        this.interest = interest;
    }

    @Override
    public String toString() {
        return "UserTest{" +
                "userName='" + userName + '\'' +
                ", interest='" + interest + '\'' +
                '}';
    }
}

2. 新建 TestControl 类 

@RequestMapping(value = "/get", method = RequestMethod.GET)
    public JSONObject getObj() {
        JSONObject output = new JSONObject();
        Set<UserTest> set = server.getObj();
        output.put("msg", "success");
        output.put("data", set);
        return output;
    }

 3. 新建 TestServe 类

public Set<UserTest> getObj() {
        List<UserTest> list = testImpl.getObj();
        Set<UserTest> set = new HashSet<>(list);
        return set;
    }

4. 新建  TestImpl 类

public List<UserTest> getObj() {
        return template.findAll(UserTest.class, "test2");
    }

5. 测试结果

java 两个集合对象 合并 ,去除重复项 java去除集合中的重复对象_Test

 可以看到,结果中存在完全相同的两项。

三. 将对象转化后再去重

只需要将 TestServe 类中的代码稍做修改

public List<UserTest> getObj() {
        List<UserTest> list = testImpl.getObj();
//        Set<UserTest> set = new HashSet<>(list);
        Set<String> set = new HashSet<>();
        for (UserTest userTest: list) {
            set.add(JSONObject.toJSONString(userTest));
        }
        List<UserTest> result = new ArrayList<>();
        for (String s: set) {
            JSONObject jsonObject = JSON.parseObject(s);
            UserTest userTest = JSONObject.toJavaObject(jsonObject, UserTest.class);
            result.add(userTest);
        }
        return result;
    }

再测试一下

java 两个集合对象 合并 ,去除重复项 java去除集合中的重复对象_List_02

 可以看到,已经没有重复数据了。