集合去重是我们常见的逻辑,分为两种:集合元素是String字符串和集合元素是对象
集合元素是String字符串的去重:
首先写一个工具类ArrayUtil:
public class ArrayUtil { /** * 集合去重 * * @param list * @return */ public static ArrayList<String> pastLeep(List<String> list) { ArrayList<String> listNew = new ArrayList<>(); Set set = new HashSet(); for (String str : list) { if (set.add(str)) { listNew.add(str); } } return listNew; } }
使用场景:
//时长费区间
ArrayList<String> timeFee = new ArrayList<>();
ArrayList<String> milesFee = new ArrayList<>();
//里程区间
List<GeneralChargeDetail> milestonesFees = generalChargeStandardEntity.getMilestonesFees();
if(milestonesFees!=null && milestonesFees.size()>1){
for (GeneralChargeDetail milestonesFee : milestonesFees) {
timeFee.add(milestonesFee.getStartTime()+"-"+milestonesFee.getEndTime());
}
ArrayList<String> pastLeepTimeFee = ArrayUtil.pastLeep(timeFee);
集合元素是对象的两种方式去重:
方式一:
List<SpecialLine> specialLines = companyFacade.getAllSpecialLines();
StringBuilder sb = new StringBuilder();
for (SpecialLine specialLine : specialLines) {
if(specialLine.getStartId().equals(startAdCode)){
//去重判断
if(-1 != sb.indexOf(specialLine.getEndId())) {
continue;
}
方式二:
lambda 表达式去重,需要在jdk1.8版本以上
//对象去重 去重相同的市
List<StartCityDTO> startCityDTOS = new LinkedList<>();
for (StartCityDTO startCityDTO1 : startCityDTOS1) {
if(null !=startCityDTO1.getStartAdCode()||"".equals(startCityDTO1.getStartAdCode()) ){
boolean b = startCityDTOS.stream().anyMatch(u -> u.getStartAdCode().equals(startCityDTO1.getStartAdCode()));
if (!b) {
startCityDTOS.add(startCityDTO1);
}
}
}