Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
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()
private final Map<String,T> map;
private EZMap(Map<String,T> _map, Function<Object,T>[] entries) {
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);
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;
Copy link

arnehormann commented Apr 16, 2014

Your code is pretty similar to my all time favourite support function for simple array creation, so I'll just leave this here:

public static <T> T[] array(T...entries) {
    return entries;

Copy link

briangoetz commented Apr 19, 2014

With what java compiler does this actually work?

Copy link

okram commented May 12, 2014

This only works in Java8 which supports lambdas.

Copy link

jagwire commented Jun 24, 2014

For some reason I don't get my parameter names, I get "arg0" instead.

Copy link

janeklb commented Nov 5, 2014

Great idea - but I'm having the same arg0 problem as @jagwire - see discussion on reddit:

Copy link

oallouch commented Dec 2, 2014

Pretty, but expensive.

Copy link

yutaodou commented Dec 26, 2014

The trick is how to get the key from the lambda, looks good.

Copy link

MeritCampus commented Feb 18, 2016

You can clear many of your doubts regarding boolean Literals in Java through Merit Campus, visit:,

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: to know more.

Copy link

henrik242 commented Feb 8, 2017

Not bad! Here's a less evil, more compact, but slightly less pretty attempt:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment