Есть ли Java-эквивалент отображения словаря Python? - PullRequest
3 голосов
/ 22 июня 2010

В Python я использую отображение словаря:

myAnonDict = {'foo': 23, 'bar': 'helloworld'}

Есть ли в Java эквивалент?

[отредактировал «анонимный словарь», чтобы прочитать «словарь»]

Ответы [ 6 ]

8 голосов
/ 22 июня 2010
Map<String, String> myMap = new HashMap<String, String>();
myMap.put("foo", "23");
myMap.put("bar", "helloworld");

Это отличается от вашего, потому что у вас есть разнородные типы данных, в то время как мой работает только со строками. Вы также можете иметь смешанные коллекции в Java, но я ненавижу это делать. Вид поражений с целью строгой типизации.

5 голосов
/ 22 июня 2010

Apache commons lang позволит вам сделать нечто подобное (пример на основе строки; можно настроить)

Вот код:

import java.util.Map;
import org.apache.commons.lang.ArrayUtils;

public class ArrayToMapExample {

    public static void main(String[] args) {
        Map dict = ArrayUtils.toMap(new String[][]{{"United States", "New York"},
                            {"United Kingdom", "London"},
                              {"Netherland", "Amsterdam"},
                              {"Japan", "Tokyo"},
                              {"France", "Paris"}});


        System.out.println("Capital of France is " + dict.get("France"));
    }
}
2 голосов
/ 22 июня 2010

У Java нет анонимного запроса, потому что 1) это язык статической типизации, 2) она не поддерживает эту функцию на уровне синтаксиса. Вам необходимо указать тип словаря при создании. Напротив, Groovy , язык на основе JVM, имеет эту функцию. Вы можете написать вышеуказанный код следующим образом в Groovy:

def myAnonDict = [foo: 23, bar: 'helloworld']
1 голос
/ 22 июня 2010

Ближайшим ярлыком для этой формы является следующий хак:

Map<String, Object> map = new HashMap<String, Object>() {{
    add("foo", 23);
    add("bar", "hello")
}};

Однако, это создаст анонимный класс, который не всегда хорош.

К сожалению, java не является языком ярлыков.

0 голосов
/ 06 января 2016

AbacusUtil , общая библиотека программирования на Java, которая предоставляет множество наиболее часто используемых методов, делающих программирование на Java более увлекательным и более продуктивным:

    Map<String, Integer> map = asMap("abc", 23, "bar", 7);

(Декларация: я разработчик AbacusUtil)

0 голосов
/ 22 июня 2010

Если вопрос был расширен с «Java» до «языка, работающего на Java VM», этот код Scala является довольно лаконичным:

def myAnonDict = Map("foo" -> 23, "bar" -> "helloworld")

Одним из улучшений синтаксиса Python является то, что он более читабелен для посторонних.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...