Junior
Java-da List və Set interfeysləri arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Java-da List və Set interfeyslərinin əsas fərqləri aşağıdakılardır:
-
Elementlərin sırası:
Listelementlərin əlavə olunma sırasını saxlayır. Elementlər indekslərə malikdir və 0-dan başlayır.Setelementlərin sırasını təmin etmir. Bəzi tətbiqlər müəyyən bir sıralama ilə ola bilər (məsələn,LinkedHashSet,TreeSet), lakinSetinterfeysi bunu tələb etmir.
-
Təkrarlanan elementlər:
Listtəkrarlanan elementlərə icazə verir.Settəkrarlanan elementlərin olmasına icazə vermir. Təkrarlanan element əlavə etməyə çalışanda, əməliyyat ya nəzərə alınmır, ya dafalseqaytarır (tətbiq və metoddan asılı olaraq).
-
Performans:
List-də element əlavə etmə və silmə əməliyyatları, xüsusənArrayListüçün,Set-ə nisbətən daha yavaş ola bilər.Set-də (HashSetkimi) elementin mövcud olub-olmamasını yoxlama (contains) adətən daha sürətlidir (orta hesabla O(1)) müqayisədəList-lə (orta hesabla O(n)).- İndeksə əsaslanan əməliyyatlar (
get,set) yalnızList-də mövcuddur.
-
Tətbiqlər:
- Tipik
Listtətbiqləri:ArrayList,LinkedList,Vector. - Tipik
Settətbiqləri:HashSet,LinkedHashSet,TreeSet.
- Tipik
Aşağıda fərqləri göstərən nümunələr var:
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 təkrarlanan elementlərə icazə verir və sırasını saxlayır
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple"); // Təkrarlanan əlavə edildi
System.out.println("List: " + list); // [Apple, Banana, Apple] göstərəcək
System.out.println("İndeks 1-dəki element: " + list.get(1)); // İndeksə görə giriş
// Set təkrarlanan elementlərə icazə vermir və sırası təmin edilmir (HashSet üçün)
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // Təkrarlanan əlavə etməyə cəhd - ignor ediləcək
System.out.println("Set: " + set); // [Apple, Banana] və ya [Banana, Apple] kimi göstərəcək
// set.get(1); // Kompilyasiya xətası - indekslə giriş mümkün deyil
}
}
Müqayisə cədvəli:
| Xüsusiyyət | List | Set |
|---|---|---|
| Sıra | Garantili (əlavə olunma sırası) | Garantili deyil (HashSet üçün, TreeSet sıralı) |
| Təkrarlananlar | İcazə verilir | İcazə verilmir |
| İndeks ilə giriş | Mümkün (get(int index)) |
Mümkün deyil |
| contains() performansı | O(n) orta (ArrayList üçün) | O(1) orta (HashSet üçün) |
| Tipik tətbiqlər | ArrayList, LinkedList, Vector | HashSet, LinkedHashSet, TreeSet |