Уникальные числа в векторе на Java - PullRequest
1 голос
/ 02 января 2012

Я должен найти уникальные числа в векторе:

Vector c = new Vector();

Что-то вроде:

int[] u = c.unique();

Как я могу это сделать?

Ответы [ 3 ]

12 голосов
/ 02 января 2012

Программировать проще всего было бы использовать Set<Integer>. Например, это напечатает уникальные элементы:

Vector<Integer> c = new Vector<Integer>();
// add elements to c

Set<Integer> unique = new HashSet<Integer>();
unique.addAll(c);
for (Integer i : unique) {
    System.out.println(i);
}
2 голосов
/ 02 января 2012

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

1 голос
/ 02 января 2012

Специального метода для этого не существует, но вот однострочный, почти функционально эквивалентный:

Integer[] u = new HashSet<Integer>(c).toArray(new Integer[0]);

(используйте LinkedHashSet или TreeSet, чтобы сохранить порядок и отсортироватьэлементы также.)

Создание int[] - это больше работы, и оно повлечет за собой явный цикл для копирования значений в int[].


FWIW, в большинстве случаев этоЛучше использовать ArrayList вместо Vector.Исключения составляют случаи, когда вам нужен тип безопасности потоков, который обеспечивает Vector, или если вы разрабатываете для платформы на основе J2ME, в которой отсутствует большинство Collection классов.

...