Java ArrayList和HashMap在飞行中

有人可以提供一个创buildJava ArrayListHashMap的例子吗? 所以,而不是做一个add()put() ,实际上在类实例化中为数组/散列提供种子数据?

举个例子,类似于PHP的例子:

 $array = array (3, 1, 2); $assoc_array = array( 'key' => 'value' ); 
 List<String> list = new ArrayList<String>() { { add("value1"); add("value2"); } }; Map<String,String> map = new HashMap<String,String>() { { put("key1", "value1"); put("key2", "value2"); } }; 

一个很好的方法是使用Google Collections :

 List<String> list = ImmutableList.of("A", "B", "C"); Map<Integer, String> map = ImmutableMap.of( 1, "A", 2, "B", 3, "C"); 

数组可以转换为List s:

 List<String> al = Arrays.asList("vote", "for", "me"); //pandering 

请注意,这不会返回一个ArrayList而是一个任意的List实例(在这种情况下,它是一个Array.ArrayList )!

布鲁诺的做法效果最好,可以考虑dynamic地图。 我喜欢列表的其他方法(见上):

 Map<String,String> map = new HashMap<String,String>() { { put("key1", "value1"); put("key2", "value2"); } }; 

使用一个不错的匿名初始值设定项:

 List<String> list = new ArrayList<String>() {{ add("a"); add("b"); }}; 

地图也一样:

 Map<String, String> map = new HashMap<String, String>() {{ put("a", "a"); put("b", "b"); }}; 

我觉得这是最优雅和可读的。

其他方法需要首先创build一个数组,然后将其转换为一个List – 我的口味太贵,而且不太可读。

短名单:

  List<String> ab = Arrays.asList("a","b"); 

你是这个意思吗?

 public List<String> buildList(String first, String second) { List<String> ret = new ArrayList<String>(); ret.add(first); ret.add(second); return ret; } ... List<String> names = buildList("Jon", "Marc"); 

或者你对ArrayList构造函数感兴趣,它需要一个Collection<? extends E> Collection<? extends E> ? 例如:

 String[] items = new String[] { "First", "Second", "Third" }; // Here's one way of creating a List... Collection<String> itemCollection = Arrays.asList(items); // And here's another ArrayList<String> itemList = new ArrayList<String>(itemCollection); 

对于列表你可以像这样使用Arrays.asList :

 List<String> stringList = Arrays.asList("one", "two"); List<Integer> intList = Arrays.asList(1, 2); 

对于地图,你可以使用这个:

 public static <K, V> Map<K, V> mapOf(Object... keyValues) { Map<K, V> map = new HashMap<>(); K key = null; for (int index = 0; index < keyValues.length; index++) { if (index % 2 == 0) { key = (K)keyValues[index]; } else { map.put(key, (V)keyValues[index]); } } return map; } Map<Integer, String> map1 = mapOf(1, "value1", 2, "value2"); Map<String, String> map2 = mapOf("key1", "value1", "key2", "value2"); 

注意:在Java 9您可以使用Map.of
注2: Double Brace Initialization创buildHashMapsbuild议在其他答案有它的警告