25 Ağustos 2019 Pazar

EnumSet Sınıfı

Giriş
Belirtilen enum'dan bir set döner. Enum.values() metodu bir array döner. Bu array üzerinde yürüyerek arama arama yapmaktan daha kolay olabilir.

Bu sınıf aslında abstract'tır. of(), complementeOf(), allOf() gibi factory metodları ile gerçek sınıfı elde ederiz. Sınıf şöyledir.
public abstract class EnumSet<E extends Enum<E>>
  extends AbstractSet<E> implements Cloneable, Serializable
Tanımlama
Şöyle yaparız
enum MyEnum { Enum1, Enum2, Enum3, Enum4, Enum5};
EnumSet<MyEnum> enumSet;
allOf metodu
Set nesnesi döner.
Örnek
Şöyle yaparız
Set<? extends Enum> allSlots = EnumSet.allOf(Slot.class);
Örnek
Şöyle yaparız.
public static <E extends Enum<E>> Enum<E> getEnumByName(Class<E> clazz, String str){
  for(E en : EnumSet.allOf(clazz)){
    ...
  }
  return null;
}
contains metodu
Örnek
Elimizde şöyle bir kod olsun.
Set< DayOfWeek > weekend = EnumSet.of( DayOfWeek.SATURDAY , DayOfWeek.SUNDAY ) ;
Şöyle yaparız.
boolean isTodayWeekend = weekend.contains( LocalDate.now().getDayOfWeek() ) ;

of metodu
Örnek
Şöyle yaparız.
enumSet = EnumSet.of (Enum1, Enum2);
of metodunun 5 parametreye kadar overload edilmiş hali var.
public static <E extends Enum<E>> EnumSet<E> of(E e)

public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2)

.
.

public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4, E e5)
Ayrıca varargs gibi de parametre alabiliyor.
public static <E extends Enum<E>> EnumSet<E> of(E first, E... rest) {
    EnumSet<E> result = noneOf(first.getDeclaringClass());
    result.add(first);
    for (E e : rest)
        result.add(e);
    return result;
}



Hiç yorum yok:

Yorum Gönder