List根据对象某个属性或String类型去重
1、使用set:set内存储的是不能重复的数据,但不能保证数据的顺序性
Set stringSet=new HashSet<>(list);
2、利用LinkedHashSet不能添加重复数据并能保证添加顺序的特性
LinkedHashSet set = new LinkedHashSet(list);
3、使用javd8 的lambda的流(主要使用在基于某个对象的属性去重的)
(1)根据TaskId进行去重
List wxMsTaskBaseExtDTOList = wxMsTaskBaseList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(o->o.getTaskId()))),ArrayList::new));
List<WxMsTaskBaseExtDTO> wxMsTaskBaseExtDTOList = wxMsTaskBaseList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(o->o.getTaskId()))),ArrayList::new));
4、使用java8的lambda的流和map(主要使用在基于某个对象的属性去重的)
(1)根据taskId去重,并以taskId为key转为map
Map<Long, List> wxMsTaskMap = wxMsTaskBaseExtDTOList.stream().collect(Collectors.groupingBy(WxMsTaskBaseExtDTO::getTaskId, Collectors.toList()));
Map<Long, List<WxMsTaskBaseExtDTO>> wxMsTaskMap = wxMsTaskBaseExtDTOList.stream().collect(Collectors.groupingBy(WxMsTaskBaseExtDTO::getTaskId, Collectors.toList()));
5、使用distinct方法(注意该方法只能用于基本类型的不能用于对象的)
List datas = list.stream().distinct().collect(Collectors.toList());
List<String> datas = list.stream().distinct().collect(Collectors.toList());