有人可以提供一个创建Java ArrayList
和动态的例子HashMap
吗?那么在类实例化中实际提供数组/散列的种子数据,而不是做一个add()
或者put()
?
举一个例子,类似于PHP的例子:
$array = array (3, 1, 2);
$assoc_array = array( 'key' => 'value' );
Run Code Online (Sandbox Code Playgroud)
bru*_*nde 96
List<String> list = new ArrayList<String>() {
{
add("value1");
add("value2");
}
};
Map<String,String> map = new HashMap<String,String>() {
{
put("key1", "value1");
put("key2", "value2");
}
};
Run Code Online (Sandbox Code Playgroud)
Ste*_*eod 30
这样做的好方法是使用Google Collections:
List<String> list = ImmutableList.of("A", "B", "C");
Map<Integer, String> map = ImmutableMap.of(
1, "A",
2, "B",
3, "C");
Run Code Online (Sandbox Code Playgroud)
cgp*_*cgp 30
数组可以转换为List
s:
List<String> al = Arrays.asList("vote", "for", "me"); //pandering
Run Code Online (Sandbox Code Playgroud)
请注意,这并没有返回ArrayList
指任意的List
情况下(在这种情况下,它是一个Array.ArrayList
)!
布鲁诺的方法效果最好,可以动态考虑地图.我更喜欢列表的其他方法(如上所示):
Map<String,String> map = new HashMap<String,String>() {
{
put("key1", "value1");
put("key2", "value2");
}
};
Run Code Online (Sandbox Code Playgroud)
使用一个不错的匿名初始化程序:
List<String> list = new ArrayList<String>() {{
add("a");
add("b");
}};
Run Code Online (Sandbox Code Playgroud)
地图也一样:
Map<String, String> map = new HashMap<String, String>() {{
put("a", "a");
put("b", "b");
}};
Run Code Online (Sandbox Code Playgroud)
我发现这是最优雅和可读的.
其他方法需要先创建一个数组,然后将其转换为List - 在我的口味中太贵,而且可读性较差.
简短列表:
List<String> ab = Arrays.asList("a","b");
Run Code Online (Sandbox Code Playgroud)
对于列表,您可以像这样使用Arrays.asList:
List<String> stringList = Arrays.asList("one", "two");
List<Integer> intList = Arrays.asList(1, 2);
Run Code Online (Sandbox Code Playgroud)
对于地图,您可以使用此:
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");
Run Code Online (Sandbox Code Playgroud)
注意:Java 9
你可以使用Map.of
Note2:Double Brace Initialization
按照其他答案中的建议创建HashMaps有一些注意事项