Java ArrayList和HashMap动态

zdwk9cvp  于 2023-04-10  发布在  Java
关注(0)|答案(8)|浏览(95)

有人能提供一个在运行中创建Java ArrayListHashMap的例子吗?所以不是做add()put(),而是在类示例化时为数组/哈希提供种子数据?
举一个类似PHP的例子:

$array = array (3, 1, 2);
$assoc_array = array( 'key' => 'value' );
bprjcwpo

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");
 }
};
0yycz8jy

0yycz8jy2#

一个很好的方法是使用List.of()(从Java 8开始)和Map.of()(从Java 9开始):

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");
nfeuvbwi

nfeuvbwi3#

数组可以转换为List s:

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

请注意,这并不是返回一个ArrayList,而是一个任意的List示例(在本例中是一个Array.ArrayList)!
Bruno的方法效果最好,可以考虑在Map上运行。但我更喜欢列表的另一种方法(如上所述):

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

zlwx9yxi4#

短名单:

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

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 --在我看来太昂贵了,而且可读性较差。

8dtrkrch

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

5rgfhyps

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构造函数感兴趣?例如:

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);
ukxgm1gy

ukxgm1gy8#

这个怎么样?

ArrayList<String> array = new ArrayList<String>(Arrays.asList("value1", "value2"));

我知道很多答案都提供了类似的解决方案,但我认为这个更精确,更简洁。如果你有很多值,你可能想这样做:

ArrayList<String> array = new ArrayList<String>(Arrays.asList(
    "value1",
    "value2",
    "value3",
    ...
));

相关问题