- 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());
}
}
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;
}
});
网友评论