Если вы используете Eclipse Collections вы можете использовать либо MutableBag
, либо MutableList
, в зависимости от того, относится ли заказ к коллекции.
// If order doesn't matter
MutableBag<String> bag = Bags.mutable.with("apple", "banana", "apple", "kiwi");
// O(1) for bag.occurrencesOf()
Assert.assertEquals(2, bag.occurrencesOf("apple"));
Assert.assertEquals(1, bag.occurrencesOf("kiwi"));
Assert.assertEquals(0, bag.occurrencesOf("pear"));
// If order does matter
MutableList<String> list = Lists.mutable.with("apple", "banana", "apple", "kiwi");
// O(n) for collection.count()
// Java 5 - 7
Assert.assertEquals(2, list.count(Predicates.equal("apple")));
Assert.assertEquals(1, list.count(Predicates.equal("kiwi")));
Assert.assertEquals(0, list.count(Predicates.equal("pear")));
// using Java 8 Lambdas
Assert.assertEquals(2, list.count(fruit -> fruit.equals("apple")));
Assert.assertEquals(1, list.count(fruit -> fruit.equals("kiwi")));
Assert.assertEquals(0, list.count(fruit -> fruit.equals("pear")));
// using Java 8 Method References
Assert.assertEquals(2, list.count("apple"::equals));
Assert.assertEquals(1, list.count("kiwi"::equals));
Assert.assertEquals(0, list.count("pear"::equals));
// O(n) for collection.countWith()
// using Java 8 Method References
Assert.assertEquals(2, list.countWith(Object::equals, "apple"));
Assert.assertEquals(1, list.countWith(Object::equals, "kiwi"));
Assert.assertEquals(0, list.countWith(Object::equals, "pear"));
Примечание: Я коммиттер для Eclipse, Коллекции
Рассмотрим с использованием классов фильтрации гуавы в. –