Как найти неуникальные элементы в массиве объектов класса в Java

#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.