实现前:
张三 | 1 |
张三 | 5 |
李四 | 1 |
李四 | 2 |
实现后:去重后张三下面有1和5,李四下面有1和2
张三 | 1,5 |
李四 | 1,2 |
代码实现:
@Test
void Test(){
Date user1 = new Date("张三","1");
Date user2 = new Date("张三","2");
Date user3 = new Date("张三","2");
Date user4 = new Date("张三","6");
Date user7 = new Date("李四","3");
Date user8 = new Date("李四","4");
List<Date> list= Arrays.asList(user1 ,user3,user2, user7,user8,user4);
List<Date> dates = distinctByMap(list);
for (Date te: dates){
List<String> e = new ArrayList<>();
for (int i =0; i<list.size();i++){
String name = list.get(i).getUsername();
if (te.getUsername().equals(name)){
e.add(list.get(i).getUserId());
}else {
System.out.println("不重复");
}
te.setList(e);
}
}
System.out.println(dates);
}
public static <T extends Date> List<T> distinctByMap(List<T> oldList) {
Map<String, Object> existMap = new HashMap<String, Object>();
List<T> newList = new ArrayList<>();
for (T t : oldList) {
String name = null != existMap.get(t.getUsername()) ? existMap.get(t.getUsername()).toString() : "";
// 如果name为空表示不存在
if (StringUtils.isBlank(name)) {
existMap.put(t.getUsername(), t.getUsername());
newList.add(t);
}
}
return newList;
}
输出结果:
[
Date{
username='张三',
list=[1, 2, 2, 6]
}, {
username='李四',
list=[3, 4]
}
]