我正在使用此代码将 a 转换Set为 a List:
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); }
我想避免在循环的每次迭代中创建一个新列表。那可能吗?
您可以使用List.addAll()方法。它接受一个集合作为参数,并且您的集合是一个集合。
List<String> mainList = new ArrayList<String>(); mainList.addAll(set);
编辑: 作为对问题编辑的回应。 很容易看出,如果你想有一个Map和Lists作为值,为了有k个不同的值,你需要创建k个不同的列表。 因此:您根本无法避免创建这些列表,必须创建这些列表。
Map
可能的解决方法: 将您的声明Map为Map<String,Set>or Map<String,Collection>,然后插入您的集合。
Map<String,Set>
Map<String,Collection>