有没有直接的方法来确定列表是否包含重复项? 某些第三方工具中的直接API方法? 如果列表包含重复项,列表中存在多少这样的重复元素? 我们可以编写代码,但我想知道是否存在任何直接API?
答案 0 :(得分:4)
您可以使用
计算出现次数List<T> list =
Map<T, Integer> count = new HashMap<T,Integer>();
for(T t: list) {
Integer i = count.get(t);
if (i == null) i = 0;
count.put(t, i + 1);
}
答案 1 :(得分:2)
不,你自己必须这样做。但是您可以使用不允许插入重复数据的对象(here)
答案 2 :(得分:2)
看起来你想要这样的东西:
public int getNumOfElementInList(List<Object> myList, Object myElement){
int count = 0;
for(Object element: myList){
if(element.equals(myElement)) //or use instanceof instead, depending
count++;
}
return count;
}
这将为您提供列表中元素的编号。或者,您可以创建一个List而不是使用count,并将重复的元素添加到List中,然后返回。
如:
public List<DuplicateStats> getTotalNumOfElementInList(List<Object> myList){
List<DuplicateStats> dups = new ArrayList<DuplicateStats>();
int i;
for(Object element: myList){
if((i = dups.indexOf(element) != -1)
dups.get(i).addOne();
else
List.add(new DuplicateStats(element));
}
return count;
}
public class DuplicateStats {
private Object element;
private int count;
public DuplicateStats(Object o){
element = o;
}
public boolean equals(String compare){
return element.toString.equals(compare);
}
public void addOne(){
count++;
}
}
您可以在类DuplicateStats中添加getter,setter等,但它会为您跟踪重复项。
答案 3 :(得分:1)
如果你想知道有多少重复项,你可以保留列表中的重复项,以及一个没有重复项的集合。然后,重复数量就是列表的大小减去集合的大小。
答案 4 :(得分:1)
答案 5 :(得分:0)
没有内置方法可以做到这一点。但是,您可以使用LinkedHashSet来解决此问题。它不允许重复(因为它像一个集合),但它保留了一个元素的顺序(因为它就像一个列表)。您可以迭代列表中的所有元素并将它们添加到LinkedHashSet,检查add方法是返回true还是false。