import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/**
* 工具类
*
* @author Stephen
* @since 2020/11/11
*/
public class CommonUtils {
/**
* list stream filter 按指定对象属性进行去重
*
* @param keyExtractor
* @param <T>
* @return
*/
public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
@Test
public void test() {
List<Map> list = Lists.newArrayList();
Map map = Maps.newHashMap();
map.put("name", "name1");
map.put("code", "code1");
Map map1 = Maps.newHashMap();
map1.put("name", "name1");
map1.put("code", "code2");
list.add(map);
list.add(map1);
System.out.println("list.size() = " + list.size());// 2
//按指定map key进行去重
list = list.stream().filter(distinctByKey(b -> b.get("name"))).collect(Collectors.toList());
System.out.println("list.size() = " + list.size());// 1
}
java list stream filter 按指定对象属性进行去重
原创StephenJava 博主文章分类:后台 ©著作权
©著作权归作者所有:来自51CTO博客作者StephenJava的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
















