为了账号安全,请及时绑定邮箱和手机立即绑定

Java初始化List,根据另一个Size

Java初始化List,根据另一个Size

慕码人8056858 2024-01-28 16:42:36
我想做一些初始化 ArrayList 的操作,其中包含非空项,具体取决于另一个变量的大小。private static final int SIZE_LIST_GROUP_MAP = 10;public static final List<Map<String, String>> LIST_GROUP_MAP = new ArrayList<>() {    for(int i=0; i < SIZE_LIST_GROUP_MAP; i++)  {    add(new HashMap<>());    }  };以前可以做类似的事情吗?

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

如果您愿意使用第三方库,这应该适用于Eclipse Collections:

public static final List<Map<String, String>> LIST_GROUP_MAP = 
    Lists.mutable.withNValues(SIZE_LIST_GROUP_MAP, HashMap::new);

考虑到您要在静态变量中存储List包含可变的可变变量,您可能需要考虑使用同步与同步或s 来代替。以下代码将为您提供一个包含一组固定实例的同步。MapsListConcurrentMapListConcurrentMap

public static final List<Map<String, String>> LIST_GROUP_MAP = 
    Lists.mutable.<Map<String, String>>withNValues(
            SIZE_LIST_GROUP_MAP,
            ConcurrentHashMap::new).asSynchronized()

Eclipse Collections 还支持MultiReaderLists。

public static final List<Map<String, String>> LIST_GROUP_MAP = 
    Lists.multiReader.withNValues(SIZE_LIST_GROUP_MAP, ConcurrentHashMap::new)

最后,如果静态的List大小永远不会改变,那么您可以将其设置为不可变,如下所示:

public static final ImmutableList<Map<String, String>> LIST_GROUP_MAP =
        Lists.mutable.<Map<String, String>>withNValues(
                SIZE_LIST_GROUP_MAP,
                ConcurrentHashMap::new).toImmutable();

注意:我是 Eclipse Collections 的提交者。


查看完整回答
反对 回复 2024-01-28
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您可以使用双大括号来完成此操作,但最终会得到 ArrayList 的子类:


private static final int SIZE_LIST_GROUP_MAP = 10;

public static final List<Map<String, String>> LIST_GROUP_MAP = new ArrayList<>() {{

    for(int i=0; i < SIZE_LIST_GROUP_MAP; i++)

    {

      add(new HashMap<>());  

    }

}};


查看完整回答
反对 回复 2024-01-28

没有找到匹配的内容?试试慕课网站内搜索吧

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号