In this post, I am going to explain how to get a Map from an enum.
private static enum Month {
JANUARY(1),
FEBRUARY(2),
MARCH(3),
APRIL(4),
MAY(5),
JUNE(6),
JULY(7),
AUGUST(8),
SEPTEMBER(9),
OCTOBER(10),
NOVEMBER(11),
DECEMBER(12);
private final int index;
Month(int index) {
this.index = index;
}
public int getIndex() {
return index;
}
}
As you see above snippet, Month enum defines all the months and their indexes.
Below snippet get a Map from the Month enum, where Month index is the key and Month as a value.
Map<Integer, Month> monthsByIndex = unmodifiableMap(Arrays.stream(Month.values()).collect(Collectors.toMap(Month::getIndex, identity())));
Find the below working application.
MapFromEnum.java
package com.sample.app.collections;
import static java.util.Collections.unmodifiableMap;
import static java.util.function.Function.identity;
import java.util.Arrays;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
public class MapFromEnum {
private static enum Month {
JANUARY(1), FEBRUARY(2), MARCH(3), APRIL(4), MAY(5), JUNE(6), JULY(7), AUGUST(8), SEPTEMBER(9), OCTOBER(10),
NOVEMBER(11), DECEMBER(12);
private final int index;
Month(int index) {
this.index = index;
}
public int getIndex() {
return index;
}
}
public static void main(String[] args) {
Map<Integer, Month> monthsByIndex = unmodifiableMap(
Arrays.stream(Month.values()).collect(Collectors.toMap(Month::getIndex, identity())));
for (Entry<Integer, Month> entry : monthsByIndex.entrySet()) {
System.out.println(entry.getKey() + "\t" + entry.getValue());
}
}
}
Output
1 JANUARY 2 FEBRUARY 3 MARCH 4 APRIL 5 MAY 6 JUNE 7 JULY 8 AUGUST 9 SEPTEMBER 10 OCTOBER 11 NOVEMBER 12 DECEMBER
You may like
Get the stream from an iterator in Java
Get the stream from Enumeration in Java
LinkedHashTable implementation in Java
No comments:
Post a Comment