我想检查阵列列表是否包含同一元素的n副本。这是问题:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class testMain {
public static void main(String[] args) {
myClass myObject = new myClass("haha1");
ArrayList a = new ArrayList();
a.add(myObject);
a.add(new myClass("haha2"));
a.add(new myClass("haha3"));
List b;
b = Collections.nCopies(5, myObject);
System.out.println(a.containsAll(b)); //prints true
}
static private class myClass {
String a;
myClass(String a) {
this.a = a;
}
}
}
问题1:列表b
的大小比列表a
-应为false
问题2:列表b
具有多个myObject
对象(而不是列表a
-应为false
这是由于包含套件的方式而行不通的,因为我想查看列表 a
中的对象 myObject
是否包含(在这种情况下( 3次
我知道我可以编写自己的方法,可以做我想要的,但是我想知道是否有一个开箱即用的解决方案,或者是最"优雅的"处理方式。<<<<<<<<<<<<
编辑:删除了我使用myClass
的澄清,因为它与给定的示例发生了冲突。
使用Collections.frequency(a,myObject) == 5
(或Collections.frequency(a,myObject) >= 5
如果您不介意您的Collection
是否具有5个实例PF myObject
(。
int java.util.collections.frequency(Collection c,object O(
返回指定集合中等于指定对象的元素数量。更正式地,返回集合中元素E的数量,以使(o == null?e == null:o.equals(e((。