Junior
Java'da List va Set interfeyslari o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
Java'da List va Set interfeyslarining asosiy farqlari quyidagilardan iborat:
-
Elementlar tartibi:
Listelementlarning qo'shilish tartibini saqlaydi. Elementlar indekslarga ega bo'lib, 0 dan boshlanadi.Setelementlarning tartibini kafolatlamaydi. Ba'zi implementatsiyalar ma'lum tartibga ega bo'lishi mumkin (masalan,LinkedHashSet,TreeSet), ammoSetinterfeysi buni talab qilmaydi.
-
Takroriylik:
Listtakroriy elementlarni saqlashga ruxsat beradi.Settakroriy elementlarni saqlashga ruxsat bermaydi. Takroriy element qo'shishga harakat qilinganda, operatsiya yoki ignor qilinadi yokifalseqaytaradi (implementatsiya va metodga qarab).
-
Performans:
Listichida element qo'shish va o'chirish operatsiyalari, ayniqsaArrayListuchun,Setga qaraganda sekinroq bo'lishi mumkin.Setda (HashSetkabi) element mavjudligini tekshirish (contains) odatda tezroq (o'rtacha O(1)) bo'ladi,Listbilan solishtirganda (o'rtacha O(n)).- Indeksga asoslangan operatsiyalar (
get,set) faqatListda mavjud.
-
Implementatsiyalar:
- Tipik
Listimplementatsiyalari:ArrayList,LinkedList,Vector. - Tipik
Setimplementatsiyalari:HashSet,LinkedHashSet,TreeSet.
- Tipik
Quyida farqlarni ko'rsatadigan misollar keltirilgan:
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 takroriy elementlarga ruxsat beradi va tartibni saqlaydi
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple"); // Takroriy element qo'shildi
System.out.println("List: " + list); // [Apple, Banana, Apple] chiqaradi
System.out.println("Indeks 1 dagi element: " + list.get(1)); // Indeks bo'yicha kirish
// Set takroriy elementlarga ruxsat bermaydi va tartib kafolatlanmaydi (HashSet uchun)
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // Takroriy element qo'shishga urinish - ignor qilinadi
System.out.println("Set: " + set); // [Apple, Banana] yoki [Banana, Apple] ko'rinishida chiqadi
// set.get(1); // Kompilyatsiya xatosi - indeks bilan kirish mumkin emas
}
}
Taqqoslash jadvali:
| Xususiyat | List | Set |
|---|---|---|
| Tartib | Garantili (qo'shish tartibi) | Garantili emas (HashSet uchun, TreeSet tartiblangan) |
| Takroriylik | Ruxsat etilgan | Ruxsat etilmagan |
| Indeks bilan kirish | Mümkin (get(int index)) |
Mümkin emas |
| contains() performansi | O(n) o'rtacha (ArrayList uchun) | O(1) o'rtacha (HashSet uchun) |
| Tipik implementatsiyalar | ArrayList, LinkedList, Vector | HashSet, LinkedHashSet, TreeSet |