Careeroza
EnumMap and EnumSet
Collections Built for Enums
EnumSet and EnumMap are very fast (backed by bit vectors and arrays) and keep constants in declaration order.
Example
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.Map;
import java.util.Set;
public class Main {
enum Permission { READ, WRITE, DELETE, SHARE, ADMIN }
enum Status { PLACED, SHIPPED, DELIVERED }
public static void main(String[] args) {
Set<Permission> viewer = EnumSet.of(Permission.READ);
Set<Permission> editor = EnumSet.range(Permission.READ, Permission.DELETE);
Set<Permission> admin = EnumSet.allOf(Permission.class);
Set<Permission> notAdmin = EnumSet.complementOf(EnumSet.of(Permission.ADMIN));
System.out.println("viewer " + viewer);
System.out.println("editor " + editor);
System.out.println("admin " + admin);
System.out.println("notAdmin " + notAdmin);
System.out.println("editor can share? " + editor.contains(Permission.SHARE));
Map<Status, Integer> counts = new EnumMap<>(Status.class);
Status[] orders = { Status.SHIPPED, Status.PLACED, Status.DELIVERED, Status.SHIPPED };
for (Status s : orders) counts.merge(s, 1, Integer::sum);
System.out.println("counts " + counts);
}
}Output
viewer [READ]
editor [READ, WRITE, DELETE]
admin [READ, WRITE, DELETE, SHARE, ADMIN]
notAdmin [READ, WRITE, DELETE, SHARE]
editor can share? false
counts {PLACED=1, SHIPPED=2, DELIVERED=1}