Поиск уникальных элементов в матрице - PullRequest
1 голос
/ 20 апреля 2011

Я работаю с двумерным массивом, который называется матрица. Мне нужно получить уникальные элементы в массиве.

ноль A B C G F
y1 a1 b2 c1 g1 f1
y2 a1 b1 c2 g2 f1
y3 a2 b1 c2 g1 f2
y4 a1 b2 c2 g2 f1
y5 a2 b2 c1 g1 f2

Так, например, для столбца A я должен получить a1 и a2. Для B, b1 и b2 и так далее.

Я пробовал разные вещи, но пока ничего не получалось. Вот что я собрал:

   public void UniqueElement(String line){

       List tempList = Arrays.asList(line);

       Set set = new HashSet(tempList);
       System.out.println("");
       System.out.printf("%s", set);

   }//UniqueElement Method

Вот что я получаю:

[ноль, А, В, С, G, F] [Y1, a1, b2, c1, g1, f1] [Y2, a1, b1, c2, g2, f1] [Y3, a2, b1, c2, g1, f2] [Y4, a1, b2, c2, g2, f1]

Может ли кто-нибудь предложить другой подход, чтобы попытаться выделить уникальные элементы в моей матрице?

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 апреля 2011

Если вы можете сэкономить память ... Зацикливайтесь на каждом элементе и используйте его в качестве ключа для карты, увеличивая значение при каждом обнаружении ключа. Когда вы закончите, зациклите карту и выведите ключи, значение которых равно 1.

На самом деле, поскольку вы заботитесь только об уникальности, вы можете использовать логическое значение в качестве значения. true = уникальный, false = не уникальный

0 голосов
/ 20 апреля 2011

Вы можете сделать вложенные циклы foreach и пройтись по элементам в массиве.На ходу сохраняйте «новые» или невидимые элементы в списке.Чтобы решить, видели ли вы элемент, обходите список каждый раз, а если вы получаете совпадение, переходите к следующему элементу массива.В противном случае (без совпадения) добавьте элемент в список и перейдите к следующему элементу массива.

Этот алгоритм очень грубый и плохо масштабируется, но он даст .список уникальных элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...