2016-04-06 2 views
0

В чем разница между методом ArrayList и выбором дублирующей фильтрации и преимуществами использования этого?Разница между ArrayList содержит() метод и набор повторяющейся фильтрации

+0

Вы должны взять класс по структурам данных и алгоритмам – ControlAltDel

+0

Метод ArrayList.contains() возвращает значение true, если объект содержится в ArrayList. Можете ли вы рассказать о _set duplicate filteration_? – sshah

+0

При вставке значений в набор Это не позволит дублировать. Но мы можем добиться такой же функциональности в arrayList, используя метод contains. Итак, почему нам нужно использовать набор для уникальных элементов. Пожалуйста, объясните, есть ли какие-либо преимущества с помощью набора (с точки зрения производительности и т. Д.). –

ответ

0

Если у вас есть Set, он гарантирует, что он не может содержать повторяющиеся элементы на основе equals. Используя List, он не делает этого автоматически. Вы должны использовать

if(!list.contains(element)){ 
    list.add(element); 
} 

смотри также What is the difference between Set and List?

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

+0

Благодарим вас за ответ. Но я хочу знать, есть ли какие-либо преимущества в производительности, если мы используйте метод Set вместо ArrayList contains() при добавлении элементов. Какова наилучшая практика и почему? –

+0

@PavithraReddy: обновил мой ответ – user140547

0

Комплект гарантирует отсутствие дубликатов. Если вы хотите иметь коллекцию, которая не имеет дубликатов, использование Set означает, что вам не нужно выполнять дублирование самостоятельно. Поэтому вам нужно писать, тестировать и отлаживать меньше кода. Это делает вас более продуктивным. Вы заменяете код, который вы можете написать с кодом в реализации Set. Поскольку авторы этого кода, вероятно, намного лучше программистов, чем вы, этот код будет более эффективным и менее глючным, чем код, который вы могли бы написать. Реализация HashSet, в частности, делает прошлые вставки. Любой, кто читает ваш код (включая будущее), который имеет набор, а не коллекцию или список, может сразу увидеть, что коллекция не имеет дубликатов. Это делает ваш код частично и надежно документирует себя.

Смежные вопросы