我正在使用这段代码将一个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);
}
我希望避免在循环的每次迭代中创建一个新列表。这可能吗?
将Set转换为List而不添加排序信息(如排序),只是为了将其存储在映射中。
因为Set是无序的,没有添加任何排序信息,所以List不应该被使用,因为它将包含随机有序的数据,并且它的所有与有序数据相关的方法都是不明确的。
您应该使用Collection接口,它同时接受映射中的Set和List。这样,就不需要额外的内存,因为您使用多态而不是复制数据。
Map<String, Collection<String>> mainMap = new HashMap<>();
for (int i=0; i < something.size(); i++) {
Set<String> set = getSet(...); //returns different result each time
mainMap.put(differentKeyName, set);
}
免责声明:我对类似答案的编辑被拒绝了,所以我添加了自己的答案和额外的信息