在不创建新列表的情况下将集合转换为列表

新手上路,请多包涵

我正在使用此代码将 Set 转换为 List

 Map<String, List<String>> mainMap = new HashMap<>();

for (int i=0; i < something.size(); i++) {
  Set<String> set = getSet(...); //returns different result each time
  List<String> listOfNames = new ArrayList<>(set);
  mainMap.put(differentKeyName, listOfNames);
}

我想避免在循环的每次迭代中创建一个新列表。那可能吗?

原文由 Muhammad Imran Tariq 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 263
2 个回答

您可以使用 List.addAll() 方法。它接受一个集合作为参数,而你的集合就是一个集合。

 List<String> mainList = new ArrayList<String>();
mainList.addAll(set);

编辑: 作为对问题编辑的回应。

很容易看出,如果你想有一个 MapList s 作为值,为了有 k 个不同的值,你需要创建 k 个不同的列表。

因此:您根本无法避免创建这些列表,必须创建列表。

可能的解决方法:

将您的 Map 声明为 Map<String,Set>Map<String,Collection> ,然后插入您的集合。

原文由 amit 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用构造函数将其转换:

 List<?> list = new ArrayList<>(set);

原文由 zengsn 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题