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

2022-05-12  本文已影响0人  嗚嗚雲
 @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());
        }
    }
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;
                }
            });
上一篇 下一篇

猜你喜欢

热点阅读