Java ArrayList和HashMap在飞行中
有人可以提供一个创buildJava ArrayList
和HashMap
的例子吗? 所以,而不是做一个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议在其他答案有它的警告