小编典典

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

all

我正在使用此代码将 a 转换Set为 a 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);
}

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


阅读 90

收藏
2022-03-08

共1个答案

小编典典

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

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

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

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

2022-03-08