JAVA处理集合(去重、排序等)

  • 1、去重
    利用list中contains方法去重,重写equals()方法即可
 @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Env env = (Env) o;
        return inf.equals(env.inf) &&
                alias.equals(env.alias) &&
                ip.equals(env.ip);
    }
  • 测试实例
 @Test
    public void test1() {
        List<Env> list = new ArrayList<>();
        Env env1 = new Env();
        env1.setAlias("testAlias1");
        env1.setIp("testIp1");
        env1.setInf("testInf1");

        Env env2 = new Env();
        env2.setAlias("testAlias1");
        env2.setIp("testIp1");
        env2.setInf("testInf1");

        Env env3 = new Env();
        env3.setAlias("testAlias3");
        env3.setIp("testIp3");
        env3.setInf("testInf3");

        list.add(env1); // 1 和 2 是重复的
        list.add(env2);
        list.add(env3);

        log.info("重写对象的equals,利用list的contains完成判断");
        List<Env> newList = new ArrayList<>();
        for (Env env : list) {
            if (!newList.contains(env)){
                newList.add(env);
            }
        }
        for (Env env : newList) {
            log.info(env.toString());
        }
    }
  • 2、排序
Collections.sort(list, new Comparator<Env>() {
                @Override
                public int compare(Env o1, Env o2) {
                    int c = 0;
                    //首先按照type由小到大排序
                    //升序 就是o1在前面,降序就是o2在前面,compareTo时比大小
                    // 返回为正数表示o1>o2, 返回为负数表示o1<o2, 返回为0表示o1==o2;
                    c = o1.getType().compareTo(o2.getType());
                    if (c == 0) { // 二次排序一般是上一个排序的结果相同的时候,再触发第二次排序
                        // 按照id由小到大排序
                        c = o1.getId().compareTo(o2.getId());
                    }
                    return c;
                }
            });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容