Sobes.tech
Junior

Дар Java, фарқияти байни List ва Set чист?

sobes.tech AI

Ҷавоб аз AI

Тафовутҳои асосӣ:

  1. Тартиби элементҳо:
    • List тартиби илова кардани элементҳоро нигоҳ медорад.
    • Set тартиби элементҳоро кафолат намекунад (аз рӯи татбиқи мушаххас, масалан, LinkedHashSet тартиби илова карданро нигоҳ медорад).
  2. Дубляжҳо:
    • List иҷозат медиҳад, ки элементҳои дубора дохил шаванд.
    • Set танҳо элементҳои беназирро нигоҳ медорад.
  3. Дастрасӣ ба элементҳо:
    • List дастрасӣ ба элементҳоро тавассути индекс медиҳад.
    • Set дастрасии мустақим ба элементҳоро тавассути индекс намедиҳад, дастрасӣ тавассути итератор ё давр анҷом дода мешавад.
  4. Камбудиҳо:
    • Оператсияҳои ҷустуҷӯ ва илова дар List бо шумораи зиёди элементҳо метавонанд нисбат ба Set сусттар бошанд (масалан, дар HashSet).
    • Оператсияҳои илова ва тоза дар Set (масалан, HashSet) одатан дорои мураккабии вақти миёнаи доимӣ мебошанд.

Масал:

// Лист, ки дубляжҳоро иҷозат медиҳад ва тартибро нигоҳ медорад
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple");
System.out.println(list); // Натиҷа: [Apple, Banana, Apple]

// Маъзум, ки танҳо элементҳои беназирро нигоҳ медорад
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple");
System.out.println(set); // Натиҷа: [Apple, Banana] (тартиб метавонад фарқ кунад)

Таблиғи муқоиса:

Мушаххасот List Set
Тартиб нигоҳ дошта мешавад кафолат дода намешавад (аз рӯи татбиқи)
Дубляжҳо иҷозат дода мешавад иҷозат дода намешавад
Дастрасӣ тавассути индекс Бале Не
Интерфейс java.util.List java.util.Set
Истифодаи маъмул Коллексияҳои тартибдодашуда, рӯйхатҳо Коллексияҳои беназир, маҷмӯъҳо