Simple Notation für Maps, oder allgemein key - value?

Romsl

Erfahrenes Mitglied
Hi,

gibt es die Möglichkeit einer simplen Notation in Form

Code:
{"pattern"="dd.MM.yyyy", key=value}

oder dergleichen um Maps zu füllen? - Sollte so à la

Code:
new String[]{"asdf", jkloe"};

sein.

Gruß

Romsl
 
Hallo!

Schau mal hier:
Code:
/**
 * 
 */
package de.tutorials;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @author daritho
 * 
 */
public class SimpleMapExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Map<String, String> mapA = fillMap(new String[] { "a=b", "c=12345",
                "d=" + String.class });
        System.out.println(mapA);

        Map<String, String> mapB = fillMap("a=b", "c=12345", "d="
                + String.class);
        System.out.println(mapB);
    }

    static Map<String, String> fillMap(String... args) {
        Map<String, String> map = new LinkedHashMap<String, String>();
        for (String s : args) {
            String[] keyValuePair = s.split("=");
            map.put(keyValuePair[0], keyValuePair[1]);
        }
        return map;
    }
}
In Python kann meine eine "Map" / Dictionary wie folgt definieren:
Code:
>>> map = {"a":"b","c":1,"d":str}
>>> map
{'a': 'b', 'c': 1, 'd': <type 'str'>}
Wenn du also Wert auf Sprachliche Eleganz legst und das ganze nicht mit Java machen willst, solltest du dir mal Python/Jython anschauen...

Gruss Tom
 
Hi Tom,

danke Dir für die schnelle Antwort.

Hab mich vorhin zu sehr auf String konzentriert, dass ich die eigentlich Anforderung ausser Acht gelassen habe.

Hatte eigentlich sowas wie

Code:
new Object[]{new String("asdf"), new Long(232)};

gemeint :rolleyes:

Gibts da auch eine Lösung in dieser Weise?

Gruß

Romsl
 
Hallo!

Code:
/**
 * 
 */
package de.tutorials;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @author daritho
 * 
 */
public class SimpleMapExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Map map = ExtendedMap.valueOf(
                new Object[] { Long.valueOf(11L), "abc" },
                new Object[] { Double.valueOf(Float.MIN_VALUE), "def" });
        System.out.println(map);

    }

    static class ExtendedMap extends LinkedHashMap {
        static Map valueOf(Object[]... keyValuePairs) {
            Map map = new LinkedHashMap();
            for (Object[] keyValuePair : keyValuePairs) {
                map.put(keyValuePair[0], keyValuePair[1]);
            }
            return map;
        }
    }

}

Gruss Tom
 
Zurück