Junior
Дар Java, фарқияти байни List ва Set чист?
sobes.tech AI
Ҷавоб аз AI
Тафовутҳои асосӣ:
- Тартиби элементҳо:
Listтартиби илова кардани элементҳоро нигоҳ медорад.Setтартиби элементҳоро кафолат намекунад (аз рӯи татбиқи мушаххас, масалан,LinkedHashSetтартиби илова карданро нигоҳ медорад).
- Дубляжҳо:
Listиҷозат медиҳад, ки элементҳои дубора дохил шаванд.Setтанҳо элементҳои беназирро нигоҳ медорад.
- Дастрасӣ ба элементҳо:
Listдастрасӣ ба элементҳоро тавассути индекс медиҳад.Setдастрасии мустақим ба элементҳоро тавассути индекс намедиҳад, дастрасӣ тавассути итератор ё давр анҷом дода мешавад.
- Камбудиҳо:
- Оператсияҳои ҷустуҷӯ ва илова дар
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 |
| Истифодаи маъмул | Коллексияҳои тартибдодашуда, рӯйхатҳо | Коллексияҳои беназир, маҷмӯъҳо |