关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

List集合去重各种方式汇总

发布时间:2020-02-24 00:00:00
package com.sb.test;import java.util.*;import java.util.concurrent.ConcurrentHashMap;import java.util.function.Function;import java.util.function.Predicate;import java.util.stream.Collectors;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.alibaba.fastjson.JSON;/*** @version 1.0.
* @className :MyTest
* @Date :2019/10/2 
**/public class MyTest {public final static Logger logger = LoggerFactory.getLogger(MyTest.class);public static void main(String[] args) {
logger.info("------------List String 去重---------------------");
Listlist = new ArrayList<>();
list.add("123");
list.add("432");
list.add("123");
list.stream().forEach(str -> System.out.println(str));
Setset = new HashSet<>(list);
list.clear();
list.addAll(set);
list.stream().forEach(str -> System.out.println(str));

logger.info("*****************List去重***********************************");
Listlist2 = new ArrayList<>();
TestModel testModel = new TestModel();
testModel.setAge(11);
testModel.setName("我爱你中国");
TestModel testModel2 = new TestModel();
testModel2.setAge(11);
testModel2.setName("我爱你中国");
list2.add(testModel);
list2.add(testModel2);
list2.stream().forEach(item -> {
logger.info(item.getName() + item.getAge());
});

logger.info("---------------根据对象的某个属性去重,例如:age-------------------------");
ListlistNew = new ArrayList<>();
SettestModelSet = new TreeSet<>((o1, o2) -> o1.getAge().compareTo(o2.getAge()));
testModelSet.addAll(list2);
listNew.addAll(testModelSet);
listNew.stream().forEach(item11 -> {
logger.info(item11.getName() + item11.getAge());
});
logger.info("----------------根据对象多个属性去重 属性:age + name--------------");
ListlistNew2 = new ArrayList<>();
ListtestModels = removeDupliByMoreModel(list2);
logger.info(JSON.toJSONString(testModels));

logger.info("----------------根据对象单个属性去重属性:name--------------");
ListtestModels1 = removeDupliByNameNew(list2);
logger.info(JSON.toJSONString(testModels1));
}/*** List集合去重*/public static ListremoveDupliByMoreModel(List list) {
ListlistModel = list.stream().collect(Collectors
.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> {return (o.getAge() + "-" + o.getName());
}))), ArrayList::new));return new ArrayList<>(listModel);
}/*** 根据对象单个属性去重属性:name*/public static ListremoveDupliByNameNew(List list) {
ListpersonList = new ArrayList<>();
list.stream().filter(distinctByKey(p -> p.getName())).forEach(p -> personList.add(p));return personList;
}/*** 据key去重重复*/public static PredicatedistinctByKey(Function<? super T, Object> keyExtractor) {
Mapmap = new ConcurrentHashMap<>();return t -> map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}

}

 

package com.sb.test; 
/**
 * @version 1.0.
 * @className :TestModel
 * @Description: TODD
 * @Date :2019/10/15 0015
 **/public class TestModel {  private Integer age;  private String name; 
  public Integer getAge() {return age;
  } 
  public void setAge(Integer age) {this.age = age;
  } 
  public String getName() {return name;
  } 
  public void setName(String name) {this.name = name;
  }
}

 


/template/Home/Zkeys/PC/Static