有人能提供一个在运行中创建Java ArrayList和HashMap的例子吗?所以不是做add()或put(),而是在类示例化时为数组/哈希提供种子数据?举一个类似PHP的例子:
ArrayList
HashMap
add()
put()
$array = array (3, 1, 2); $assoc_array = array( 'key' => 'value' );
bprjcwpo1#
List<String> list = new ArrayList<String>() { { add("value1"); add("value2"); } }; Map<String,String> map = new HashMap<String,String>() { { put("key1", "value1"); put("key2", "value2"); } };
0yycz8jy2#
一个很好的方法是使用List.of()(从Java 8开始)和Map.of()(从Java 9开始):
List.of()
Map.of()
List<String> list = List.of("A", "B", "C"); Map<Integer, String> map = Map.of(1, "A", 2, "B", 3, "C");
Java 7及更早版本可能使用Google Collections:
List<String> list = ImmutableList.of("A", "B", "C"); Map<Integer, String> map = ImmutableMap.of( 1, "A", 2, "B", 3, "C");
nfeuvbwi3#
数组可以转换为List s:
List
List<String> al = Arrays.asList("vote", "for", "me"); //pandering
请注意,这并不是返回一个ArrayList,而是一个任意的List示例(在本例中是一个Array.ArrayList)!Bruno的方法效果最好,可以考虑在Map上运行。但我更喜欢列表的另一种方法(如上所述):
Array.ArrayList
Map<String,String> map = new HashMap<String,String>() { { put("key1", "value1"); put("key2", "value2"); } };
zlwx9yxi4#
短名单:
List<String> ab = Arrays.asList("a","b");
myzjeezk5#
使用一个很好的匿名初始化器:
List<String> list = new ArrayList<String>() {{ add("a"); add("b"); }};
这也适用于Map:
Map<String, String> map = new HashMap<String, String>() {{ put("a", "a"); put("b", "b"); }};
我觉得这是最优雅和可读性。其他方法需要先创建一个数组,然后将其转换为List --在我看来太昂贵了,而且可读性较差。
8dtrkrch6#
对于列表,您可以使用Arrays.asList,如下所示:
List<String> stringList = Arrays.asList("one", "two"); List<Integer> intList = Arrays.asList(1, 2);
对于Map,您可以使用以下命令:
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用于创建HashMap,其他答案中建议使用caveats
Java 9
Double Brace Initialization
5rgfhyps7#
你是说像这样吗
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");
或者你对接受Collection<? extends E>的ArrayList构造函数感兴趣?例如:
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);
ukxgm1gy8#
这个怎么样?
ArrayList<String> array = new ArrayList<String>(Arrays.asList("value1", "value2"));
我知道很多答案都提供了类似的解决方案,但我认为这个更精确,更简洁。如果你有很多值,你可能想这样做:
ArrayList<String> array = new ArrayList<String>(Arrays.asList( "value1", "value2", "value3", ... ));
8条答案
按热度按时间bprjcwpo1#
0yycz8jy2#
一个很好的方法是使用
List.of()
(从Java 8开始)和Map.of()
(从Java 9开始):Java 7及更早版本可能使用Google Collections:
nfeuvbwi3#
数组可以转换为
List
s:请注意,这并不是返回一个
ArrayList
,而是一个任意的List
示例(在本例中是一个Array.ArrayList
)!Bruno的方法效果最好,可以考虑在Map上运行。但我更喜欢列表的另一种方法(如上所述):
zlwx9yxi4#
短名单:
myzjeezk5#
使用一个很好的匿名初始化器:
这也适用于Map:
我觉得这是最优雅和可读性。
其他方法需要先创建一个数组,然后将其转换为List --在我看来太昂贵了,而且可读性较差。
8dtrkrch6#
对于列表,您可以使用Arrays.asList,如下所示:
对于Map,您可以使用以下命令:
注意:在
Java 9
中,您可以使用Map.of注2:
Double Brace Initialization
用于创建HashMap,其他答案中建议使用caveats5rgfhyps7#
你是说像这样吗
或者你对接受
Collection<? extends E>
的ArrayList
构造函数感兴趣?例如:ukxgm1gy8#
这个怎么样?
我知道很多答案都提供了类似的解决方案,但我认为这个更精确,更简洁。如果你有很多值,你可能想这样做: