使用番石榴从列表中删除重复项
我们如何在番石榴api的帮助下从列表中删除重复项?
目前我正在关注这个:
private List<T> removeDuplicate(List<T> list){
return new ArrayList<T>(new LinkedHashSet<T>(list));
}
我们如何在番石榴api的帮助下从列表中删除重复项?
目前我正在关注这个:
private List<T> removeDuplicate(List<T> list){
return new ArrayList<T>(new LinkedHashSet<T>(list));
}
也许最有效的方法是 ,它消除了重复项并保留了迭代顺序。ImmutableSet.copyOf(list).asList()
(但是你的实现几乎同样有效,并且不会抛出空值,以防万一你真的想要在集合中使用空值。LinkedHashSet
我喜欢Louis的答案,因为它的简单性(因为它是唯一不需要2次完整迭代的答案),但不幸的是,在现实世界中,你经常会遇到确实发生的情况。下面是一个稍长的空安全版本:null
ImmutableSet.copyOf(
Iterables.filter(
list, Predicates.not(Predicates.isNull()))).asList();
或者,使用静态导入:
copyOf(filter(list, not(isNull()))).asList();
当然,您需要意识到,所有值都将从列表中丢失。null