Java 包含列表中对象的所有nCopies
我想检查Arraylist是否包含相同元素的n个副本。 问题是:Java 包含列表中对象的所有nCopies,java,list,collections,contains,Java,List,Collections,Contains,我想检查Arraylist是否包含相同元素的n个副本。 问题是: import java.util.ArrayList; 导入java.util.Collections; 导入java.util.List; 公共类testMain{ 公共静态void main(字符串[]args){ myClass myObject=新的myClass(“haha1”); ArrayList a=新的ArrayList(); a、 添加(myObject); a、 添加(新myClass(“haha2”); a
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
公共类testMain{
公共静态void main(字符串[]args){
myClass myObject=新的myClass(“haha1”);
ArrayList a=新的ArrayList();
a、 添加(myObject);
a、 添加(新myClass(“haha2”);
a、 添加(新myClass(“HAHAA3”);
名单b;
b=集合.nCopies(5,myObject);
System.out.println(a.containsAll(b));//打印为true
}
静态私有类myClass{
字符串a;
myClass(字符串a){
这个a=a;
}
}
}
问题1:列表b
的大小大于列表a
-应为false问题2:List
b
有多个myObject
对象(与Lista
相反),应为false
由于containsAll的工作方式,这不起作用,因为我想查看对象myObject
是否在列表a
中包含了3次(在本例中)
我知道我可以写我自己的方法,这将完全符合我的要求,但我想知道是否有一个开箱即用的解决方案,或者什么是最“优雅”的处理方式
编辑:删除了对我使用
myClass
的澄清,因为它与给定示例冲突。使用Collections.frequency(a,myObject)==5
(或者Collections.frequency(a,myObject)>=5
,如果您不介意Collection
中的myObject
实例超过5个的话
int java.util.Collections.frequency(集合c,对象o)
返回指定集合中与指定对象相等的元素数。更正式地说,返回集合中元素数e,以便(o==null?e==null:o.equals(e))
废话,我怎么没看到。谢谢。“我应该澄清一下,在我的例子中,
myClass
是enum。”-考虑到newmyclass(…)的多次出现
在您的代码中,不,它不是。更不用说包含的声明了。@Holger我用myClass来说明这个问题,我可以看到在本例中提到enum时它是如何令人困惑的。我删除它是为了不让别人进一步困惑。您没有删除它,而是添加了另一条语句…