Junior
Фарқи байни интерфейсҳои List ва Set дар Java чист?
sobes.tech AI
Ҷавоб аз AI
Асосӣ фарқиятҳо байни интерфейсҳои List ва Set дар Java чунинанд:
-
Тартиби элементҳо:
Listтартиби илова кардани элементҳоро нигоҳ медорад. Элементҳо индекс доранд, ки аз 0 оғоз мешаванд.Setтартиби элементҳоро кафолат намедиҳад. Бархе амалишавиҳо (масалан,LinkedHashSet,TreeSet) метавонанд тартиби муайян дошта бошанд, аммо интерфейсиSetонро талаб намекунад.
-
Дубляжҳо:
Listиҷозат медиҳад, ки элементҳои дубляжӣ дошта бошанд.Setиҷозат намедиҳад, ки элементҳои дубляжӣ дошта бошанд. Ҳангоми кӯшиши илова кардани дубляжӣ, амалия ё игнор карда мешавад ёfalseбармегардонад (ба вобаста аз амалишавӣ ва усул).
-
Камаронӣ:
- Амали илова ва хориҷ кардани элемент дар маркази
Listметавонад нисбатан сусттар бошад (хусусан бароиArrayList) дар муқоиса боSet. - Санҷиши мавҷудияти элемент (
contains) дарSet, ки бар асоси хешингӣ (HashSet) аст, одатан тезтар аст (дар миёна O(1)) дар муқоиса боList(дар миёна O(n)). - Амали асосёфта ба индекс (
get,set) танҳо дарListдастрас аст.
- Амали илова ва хориҷ кардани элемент дар маркази
-
Аммалишавиҳо:
- Реализаҳои маъмулӣ барои
List:ArrayList,LinkedList,Vector. - Реализаҳои маъмулӣ барои
Set:HashSet,LinkedHashSet,TreeSet.
- Реализаҳои маъмулӣ барои
Масаланҳо, ки фарқиятҳоро нишон медиҳанд:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class CollectionDifferences {
public static void main(String[] args) {
// List иҷозат медиҳад дубляж ва тартибро нигоҳ медорад
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple"); // Илова кардани дубляж
System.out.println("List: " + list); // Натиҷа: [Apple, Banana, Apple]
System.out.println("Элемент дар индекс 1: " + list.get(1)); // Дастрасӣ ба индекс
// Set иҷозат намедиҳад дубляж ва тартиб кафолат намедиҳад (барои HashSet)
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // кӯшиши илова кардани дубляж - игнор карда мешавад
System.out.println("Set: " + set); // Натиҷа метавонад бошад [Apple, Banana] ё [Banana, Apple]
// set.get(1); // Хатогӣ дар компиляция - дастрасӣ ба индекс нест
}
}
Таблиғи муқоиса:
| Хусусият | List | Set |
|---|---|---|
| Тартиб | Гарантӣ (тартиби илова) | Надорад (барои HashSet), тартиб дорад (TreeSet) |
| Дубляжҳо | Иҷозат дорад | Иҷозат намедиҳад |
| Дастрасӣ ба индекс | Мумкин (get(int index)) |
Нест мумкин |
| Камаронӣ contains() | O(n) дар миёна (барои ArrayList) | O(1) дар миёна (барои HashSet) |
| Реализаҳои маъмул | ArrayList, LinkedList, Vector | HashSet, LinkedHashSet, TreeSet |