java 定义静态的map_java – 初始化ArrayList的静态Map

我想定义一个静态Map的ArrayList来包含一堆[key,ArrayList object]的.

在这些时间段中有很多要添加到这些对中,但它们在每次执行期间都是固定的.因此,最好的方法是在定义arrayList的映射时进行初始化.

我可以通过静态方法做到这一点,包括:

arrayList.add("value1"),

arrayList.add("value2"),

arrayList.add("value3"),

...

然后:

map.put("key", arrayList)

但是,必须对每对[key,ArrayList]重复这些.

我试过ImmutableMap,但得到了这个错误:

Exception in thread "main" java.lang.ExceptionInInitializerError

Caused by: java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList

at bugTriaging.Constants.(Constants.java:11)

这是我的代码:

package package1;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.HashMap;

import java.util.Map;

import com.google.common.collect.ImmutableMap;

public class Constants {

static final Map> map1 = ImmutableMap.>builder()

.put("key1", (ArrayList) Arrays.asList("value1", "value2", "value3"))

.put("key2", (ArrayList) Arrays.asList("value4", "value5", "value6", "value7"))

.put("key3", (ArrayList) Arrays.asList("value8", "value9", "value10", "value11", "value12", "value13"))

.build();

public static void main(String[] args) {

System.out.println("Started ...");

}

}

我玩过静态和最终值,但无法运行它.

最后,我可以运行这段代码:

@SuppressWarnings("serial") //to avoid the warning.

public static HashMap> map2 = new HashMap>() {{

put("key1", new ArrayList() {{

add("value1");

add("value2");

}});

put("key2", new ArrayList() {{

add("value3");

add("value4");

add("value5");

}});

put("key3", new ArrayList() {{

add("value6");

add("value7");

add("value8");

}});

}};

这是我的问题:

1- What is the problem of ImmutableMap in my first approach?

2- With my solution, I get warnings (“The serializable class does not declare a static final serialVersionUID field of type long“). Is adding @SuppressWarnings(“serial”) the right way of getting rid of warnings or there is a better way?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值