列表中的对象的ncopies包含词



我想检查阵列列表是否包含同一元素的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((。

最新更新