Java 查找列表中元素的出现次数
是否有一种直接的方法来确定列表是否包含重复项? 某些第三方UTIL中的直接API方法? 如果列表包含重复的元素,那么列表中有多少重复的元素?Java 查找列表中元素的出现次数,java,list,Java,List,是否有一种直接的方法来确定列表是否包含重复项? 某些第三方UTIL中的直接API方法? 如果列表包含重复的元素,那么列表中有多少重复的元素? 我们可以编写代码,但我想知道是否存在任何直接API?不,您必须自己编写。但是您可以使用不允许插入重复数据的对象,因为没有内置的方法来执行此操作。但是,您可以使用LinkedHashSet来解决这个问题。它不允许重复,因为它的行为类似于一个集合,但它保留了元素的顺序,因为它的行为类似于一个列表。您可以迭代列表中的所有元素并将它们添加到LinkedHashSe
我们可以编写代码,但我想知道是否存在任何直接API?不,您必须自己编写。但是您可以使用不允许插入重复数据的对象,因为没有内置的方法来执行此操作。但是,您可以使用LinkedHashSet来解决这个问题。它不允许重复,因为它的行为类似于一个集合,但它保留了元素的顺序,因为它的行为类似于一个列表。您可以迭代列表中的所有元素并将它们添加到LinkedHashSet,检查add方法是否返回true或false。如果您想知道有多少重复项,您可以将列表保留为重复项,同时保留一个不包含重复项的集合。重复的数量就是列表的大小减去集合的大小。您可以使用
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);
}
如果您想要一个API,可以使用的找到重复的API
只需将列表添加到集合中并使用该方法即可。看起来您需要这样的内容:
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;
}
这将为您提供列表中元素的编号。或者,您可以创建一个列表而不是使用count,并将重复的元素添加到列表中,然后返回该列表
例如:
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++;
}
}
您可以将getter、setter等添加到DuplicateStats类中,但它会为您跟踪重复项。这可能会有所帮助。您是否正在尝试查看是否有对同一对象的引用,或者容器中是否有一个类的多个实例?实际上,此列表是由字符串组成的。列表包含方法的名称。我想知道是否在类中重载了特定的方法。我通过思考得到所有的方法,并把它们列在一个列表中。现在传递我需要验证的methodName。但是如果这个列表包含多个,那么我需要维护一个计数器。我可以这样做,但我想知道是否有更好的方法,所以我问是否有任何直接的API。啊。。。嗯,我相信反射可以告诉你一个方法是否被重写。。。使用getAnnotations方法并对照Override java注释检查它们。这主意不错,但这是第三方jar/类,我们不确定它们是否使用注释进行重写。我想允许列表中存在重复项。它将有副本,但想知道是否有副本,然后有多少?然后你需要实现它,因为没有现有的API来做到这一点,但有很多例子说明了如何在互联网上做到这一点,比如说,你说没有是什么意思?事实上,有第三方UTIL可以计算允许它们的集合中的重复项。谢谢,但我想允许重复项。很好。但是复杂度是2,如果您想获得列表中所有重复项的数量,那么很容易修改。