перенести коллекцию в treeset и затем обратно в коллекцию - PullRequest
0 голосов
/ 12 мая 2018

У меня есть Collection<String> collection, и я хочу удалить дубликаты (я хочу использовать treeset для удаления дубликатов). Как я могу перенести эту коллекцию в TreeSet и затем вернуть ее обратно в коллекцию?

Заранее спасибо.George

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Вы можете просто выполнить свое требование, выполнив шаги, указанные ниже -

       Collection<String> collection = new ArrayList<>();

        collection.add("data1");
        collection.add("data1");
        collection.add("data2");
        collection.add("data3");

        Set<String> set = new TreeSet<>();

        set.addAll(collection);
        collection.clear();
        collection.addAll(set);
        System.out.println(collection);

Это удалит дубликат data1 и даст вывод:

[data1, data2, data3]

0 голосов
/ 12 мая 2018

Collection не является конкретным типом: это интерфейс. Таким образом, вы не можете создать его непосредственно.
Теперь, когда TreeSet является реализацией Collection, вы можете назначить объект TreeSet переменной Collection. Это будет прозрачно для клиента, который манипулирует Collection.

Footprint

Вы также должны знать, что Set имеет более важную площадь, чем упорядоченная коллекция, как List. Поэтому, если Collection содержит много элементов, использование List может иметь смысл, поскольку клиенты будут манипулировать переменной Collection.

Заказанный

A TreeSet использует естественный порядок элементов (или какой из Comparator), а не порядок появления / вставки элементов в Collection.
Таким образом, порядок элементов может измениться, если вы используете TreeSet. Если Коллекция упорядочена как последовательность и вы хотите сохранить ее, лучше использовать LinkedHashSet.

...