专业建站公司提供详细的功能描述及报价,关于网站建设的实训报告,外贸营销网站建设方案,广州新塘网站建设一、需求背景 有一个List集合,里面有n个Answer成员,成员种有m个属性,即: ListAnswer answers ...,现在我需要根据Answer的某一个属性对List去重(属性不固定),应该如何实现呢?
二、解决办法 需要满足上述需求#xff0c;并不难#xff0c;我们可以使用Java8提供的…一、需求背景 有一个List集合,里面有n个Answer成员,成员种有m个属性,即: ListAnswer answers ...,现在我需要根据Answer的某一个属性对List去重(属性不固定),应该如何实现呢?
二、解决办法 需要满足上述需求并不难我们可以使用Java8提供的流式编程接口来完成
自定义一个去重方法: /*** 根据传入的key去重* param keyExtractor* param T* return*/public static T PredicateT distinctByKey(Function? super T, Object keyExtractor) {MapObject, Boolean seen new ConcurrentHashMap();return t - seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) null;}调用该方法
ListAnswer distinctAnswers answerList.stream().filter(distinctByKey(Answer::getAnswerCode)) .collect(Collectors.toList());通过如上调用,我们得到的就是一个根据自定义属性去重后的list.