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

我想做一些初始化 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<>());  

  }  

};

以前可以做类似的事情吗?


慕码人8056858
浏览 39回答 2
2回答

Smart猫小萌

如果您愿意使用第三方库,这应该适用于Eclipse Collections:public static final List<Map<String, String>> LIST_GROUP_MAP =      Lists.mutable.withNValues(SIZE_LIST_GROUP_MAP, HashMap::new);考虑到您要在静态变量中存储List包含可变的可变变量,您可能需要考虑使用同步与同步或s 来代替。以下代码将为您提供一个包含一组固定实例的同步。MapsListConcurrentMapListConcurrentMappublic 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 的提交者。

蝴蝶不菲

您可以使用双大括号来完成此操作,但最终会得到 ArrayList 的子类:private static final int SIZE_LIST_GROUP_MAP = 10;public static final List<Map<String, String>> LIST_GROUP_MAP = new ArrayList<>() {{&nbsp; &nbsp; for(int i=0; i < SIZE_LIST_GROUP_MAP; i++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; add(new HashMap<>());&nbsp;&nbsp;&nbsp; &nbsp; }}};
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java