将“集”转换为“列表”而不创建新列表

2022-08-31 04:15:45

我正在使用此代码将a转换为:SetList

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

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


答案 1

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

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

编辑:作为对问题编辑的响应。
很容易看出,如果你想用s作为值,为了有k个不同的值,你需要创建k个不同的列表。
因此:您根本无法避免创建这些列表,必须创建列表。MapList

可能的解决方法:
将你的声明为 or,然后插入你的集合。MapMap<String,Set>Map<String,Collection>


答案 2

使用构造函数转换它:

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

推荐