Last active
June 29, 2018 20:57
-
-
Save galdosd/10823529 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class EZMap<T> { | |
public static void main(String[] args) { | |
Map<String,Object> m = hashMap( | |
bob -> 5, | |
TheGimp -> 8, | |
incredibleKoolAid -> "James Taylor", | |
heyArnold -> new Date() | |
); | |
System.out.println(m); | |
} | |
private final Map<String,T> map; | |
private EZMap(Map<String,T> _map, Function<Object,T>[] entries) { | |
map=_map; | |
for( Function<Object,T> entry: entries ) { | |
final Method m; | |
try { | |
m = entry.getClass().getDeclaredMethod("apply", Object.class); | |
} catch (NoSuchMethodException nsme ) { throw new RuntimeException(nsme); } | |
final Parameter p = m.getParameters()[0]; | |
final String key = p.getName(); | |
final T value = entry.apply(null); | |
map.put(key,value); | |
} | |
} | |
public static <R> Map<String,R> hashMap(Function<Object, R>... entries) { | |
return new EZMap<R>(new HashMap<>(), entries).map; | |
} | |
public static <R> Map<String,R> treeMap(Function<Object, R>... entries) { | |
return new EZMap<R>(new TreeMap<>(), entries).map; | |
} | |
} |
The trick is how to get the key from the lambda, looks good.
You can clear many of your doubts regarding boolean Literals in Java through Merit Campus, visit: http://java.meritcampus.com/core-java-topics/data-types-in-java, http://java.meritcampus.com/core-java-topics/literals-in-java
Not only data types, we also have each and every topic in Core Java with example for each. You can read lot of sessions and can write many practice tests in Merit Campus Java website. visit: http://java.meritcampus.com/core-java-topics/ to know more.
Not bad! Here's a less evil, more compact, but slightly less pretty attempt: http://stackoverflow.com/a/39510693/13365
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Pretty, but expensive.