#java #arraylist
#java #arraylist
Вопрос:
Я не уверен, как сказать, что мне нужно, поэтому вот пример:
class Foo{
int x;
int y;
int z;
}
ArrayList<Foo> a;
В массиве есть объекты <a,b,c>,<a,c,d>,<b,c,e>,<b,e,f>,<c,e,f>,<g,h,i>
и т. Д
Как я могу получить все объекты, которые имеют общее значение x. В приведенном выше примере я хотел бы получить <a,b,c>,<a,c,d>
и <b,c,e>,<b,e,f>
только.
Я ищу эффективный способ сделать это.
Ответ №1:
Вы можете перебирать все Foo
s, добавляя их в a Map<Integer, Collection<Foo>>
, где ключ — это значение Foo x
, а значение — это коллекция Foo.
Комментарии:
1. Дело в том, что, когда я нахожу первый объект, как я узнаю, нужен ли он мне, прежде чем перебирать их все? Должен ли я выполнять одну итерацию для «группировки» по значению x, а другую — для поиска «двойников»?
2. Вам придется перебирать все экземпляры, чтобы обнаружить общие значения x.