Bu öğreticide, örnekler yardımıyla Java EnumSet sınıfı ve çeşitli yöntemleri hakkında bilgi edineceğiz.
EnumSet
Java koleksiyonları çerçeve sınıfı tek enum elemanlarının bir dizi uygulamasını sağlar.
EnumSet hakkında bilgi edinmeden önce Java Enums hakkında bilgi sahibi olduğunuzdan emin olun.
Set arayüzünü uygular.
EnumSet oluşturma
Bir enum kümesi oluşturmak için önce java.util.EnumSet
paketi içe aktarmalıyız .
Diğer küme uygulamalarının aksine, enum kümesinin genel oluşturucuları yoktur. Bir enum kümesi oluşturmak için önceden tanımlanmış yöntemleri kullanmalıyız.
1. allOf (Boyut) kullanma
allof()
Yöntem belirtilen enum tipi Boyutu bütün değerlerini içeren bir enum kümesi oluşturur. Örneğin,
import java.util.EnumSet; class Main ( // an enum named Size enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using allOf() EnumSet sizes = EnumSet.allOf(Size.class); System.out.println("EnumSet: " + sizes); ) )
Çıktı
EnumSet: (KÜÇÜK, ORTA, BÜYÜK, EKSTRAJ)
İfadeye dikkat edin,
EnumSet sizes = EnumSet.allOf(Size.class);
Burada Size.class, oluşturduğumuz Boyut numaralandırmasını gösterir.
2. noneOf (Boyut) kullanma
noneOf()
Yöntem boş enum kümesi oluşturur. Örneğin,
import java.util.EnumSet; class Main ( // an enum type Size enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using noneOf() EnumSet sizes = EnumSet.noneOf(Size.class); System.out.println("Empty EnumSet: " + sizes); ) )
Çıktı
Boş EnumSet: ()
Burada, boyutları adlı boş bir enum oluşturduk.
Not : Yukarıdaki programa yalnızca enum türü Size öğeleri ekleyebiliriz. Bunun nedeni, Boyut numaralandırmasını kullanarak boş enum kümemizi oluşturmamızdır.
3. Aralık (e1, e2) Yöntemini Kullanma
range()
Yöntem, her iki değer de dahil olmak üzere, E1 ve E2 arasındaki bir enum değerlerini içeren bir numaralama kümesi oluşturur. Örneğin,
import java.util.EnumSet; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using range() EnumSet sizes = EnumSet.range(Size.MEDIUM, Size.EXTRALARGE); System.out.println("EnumSet: " + sizes); ) )
Çıktı
EnumSet: (MEDIUM, LARGE, EXTRALARGE)
4. () Yönteminin Kullanılması
of()
Yöntem belirtilen elemanları ihtiva eden bir enum kümesi oluşturur. Örneğin,
import java.util.EnumSet; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Using of() with a single parameter EnumSet sizes1 = EnumSet.of(Size.MEDIUM); System.out.println("EnumSet1: " + sizes1); EnumSet sizes2 = EnumSet.of(Size.SMALL, Size.LARGE); System.out.println("EnumSet2: " + sizes2); ) )
Çıktı
EnumSet1: (MEDIUM) EnumSet2: (KÜÇÜK, BÜYÜK)
EnumSet Yöntemleri
EnumSet
Sınıf bize enum sette çeşitli unsurları gerçekleştirmek için izin yöntemler sağlar.
EnumSet'e Eleman Ekle
add()
- belirtilen enum değerlerini enum kümesine ekleraddAll()
belirtilen koleksiyonun tüm öğelerini sete ekler
Örneğin,
import java.util.EnumSet; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using allOf() EnumSet sizes1 = EnumSet.allOf(Size.class); // Creating an EnumSet using noneOf() EnumSet sizes2 = EnumSet.noneOf(Size.class); // Using add method sizes2.add(Size.MEDIUM); System.out.println("EnumSet Using add(): " + sizes2); // Using addAll() method sizes2.addAll(sizes1); System.out.println("EnumSet Using addAll(): " + sizes2); ) )
Çıktı
Add () kullanarak EnumSet: (ORTA) addAll () kullanarak EnumSet: (SMALL, MEDIUM, LARGE, EXTRALARGE)
Yukarıdaki örnekte, addAll()
bir enum set size1'in tüm elemanlarını bir enum set size2'ye eklemek için yöntemi kullandık .
Bu gibi diğer koleksiyonlardan unsurları eklemek mümkündür ArrayList
, LinkedList
vb kullanarak bir enum setine addAll()
. Ancak, tüm koleksiyonlar aynı enum türünde olmalıdır.
EnumSet Öğelerine Erişim
Bir enum setinin öğelerine erişmek için iterator()
yöntemi kullanabiliriz . Bu yöntemi kullanmak için java.util.Iterator
paketi içe aktarmalıyız . Örneğin,
import java.util.EnumSet; import java.util.Iterator; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using allOf() EnumSet sizes = EnumSet.allOf(Size.class); Iterator iterate = sizes.iterator(); System.out.print("EnumSet: "); while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) )
Çıktı
EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE,
Not :
hasNext()
true
enum kümesinde bir sonraki öğe varsa döndürürnext()
enum kümesindeki sonraki öğeyi döndürür
EnumSet Öğelerini Kaldır
remove()
- belirtilen öğeyi enum kümesinden kaldırırremoveAll()
- enum kümesindeki tüm öğeleri kaldırır
Örneğin,
import java.util.EnumSet; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating EnumSet using allOf() EnumSet sizes = EnumSet.allOf(Size.class); System.out.println("EnumSet: " + sizes); // Using remove() boolean value1 = sizes.remove(Size.MEDIUM); System.out.println("Is MEDIUM removed? " + value1); // Using removeAll() boolean value2 = sizes.removeAll(sizes); System.out.println("Are all elements removed? " + value2); ) )
Çıktı
EnumSet: (KÜÇÜK, ORTA, BÜYÜK, EKSTRA) ORTA kaldırıldı mı? true Tüm öğeler kaldırıldı mı? doğru
Diğer yöntemler. Diğer metodlar
Yöntem | Açıklama |
---|---|
copyOf() | Creates a copy of the EnumSet |
contains() | Searches the EnumSet for the specified element and returns a boolean result |
isEmpty() | Checks if the EnumSet is empty |
size() | Returns the size of the EnumSet |
clear() | Removes all the elements from the EnumSet |
Clonable and Serializable Interfaces
The EnumSet
class also implements Cloneable
and Serializable
interfaces.
Cloneable Interface
It allows the EnumSet
class to make a copy of instances of the class.
Serializable Interface
Whenever Java objects need to be transmitted over a network, objects need to be converted into bits or bytes. This is because Java objects cannot be transmitted over the network.
The Serializable
interface allows classes to be serialized. This means objects of the classes implementing Serializable
can be converted into bits or bytes.
Why EnumSet?
EnumSet
Diğer grubu uygulamaları (gibi daha enum değerleri depolamak için etkili bir yöntem sağlar HashSet
, TreeSet
).
Bir enum kümesi yalnızca belirli bir numaralamanın enum değerlerini depolar. Bu nedenle JVM, kümenin tüm olası değerlerini zaten biliyor.
Numaralandırma kümelerinin dahili olarak bir bit dizisi olarak uygulanmasının nedeni budur. Bitler, elemanların enum setinde mevcut olup olmadığını belirtir.
İlgili elemanın biti, eğer bu eleman sette mevcutsa açılır.