Я хотел бы проверить, содержит ли Arraylist 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
- должно быть ложным
Проблема 2: список b
имеет более одного myObject
объекты (в отличие от List a
- должно быть ложным
Это не работает из-за того, как работает containsAll, так как я хочу увидеть, содержится ли объект myObject
(в данном случае) 3 раза в списке a
.
Я знаю, что могу написать свой собственный метод, который будет делать именно то, что я хочу, но мне было интересно, есть ли готовое решение для этогослучай или то, что было бы самым «элегантным» способом обработки.
РЕДАКТИРОВАТЬ: Удалено пояснение для моего использования myClass
, поскольку это противоречило приведенному примеру.