JAVA 去除重复对象方法

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

一. 引入依赖

        
            com.alibaba
            fastjson
            1.2.41
        

二. 直接放入 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 set = server.getObj();
        output.put("msg", "success");
        output.put("data", set);
        return output;
    }

 3. 新建 TestServe 类

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

4. 新建  TestImpl 类

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

5. 测试结果

JAVA 去除重复对象方法_第1张图片

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

三. 将对象转化后再去重

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

 public List getObj() {
        List list = testImpl.getObj();
//        Set set = new HashSet<>(list);
        Set set = new HashSet<>();
        for (UserTest userTest: list) {
            set.add(JSONObject.toJSONString(userTest));
        }
        List 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 去除重复对象方法_第2张图片

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

你可能感兴趣的:(java,开发语言,后端)