当前位置: 首页 > 面试题库 >

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

包丁雨
2023-03-14
问题内容

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

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


问题答案:

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

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

编辑: 作为对问题的编辑的回应。
很容易看出,如果要使用Map带有Lists作为值,则要具有k个不同的值,则需要创建k个不同的列表。
因此:您完全无法避免创建这些列表,必须创建列表。

可能的解决方法:
声明您Map为a Map<String,Set>Map<String,Collection>代替,然后插入您的集合。



 类似资料:
  • 我正在寻找在Java-8中过滤列表的最干净的方法,用一个简单的lambda ,而不用创建一个新的列表。 特别是,这种解决方案不合适,因为返回一个新的: 注意,下面的解决方案也不起作用,因为列表应该< code>clear()其原始值(但是很明显,如果您在过滤之前清除它,就没有什么可过滤的了...): (此外,我更喜欢不使用第三方库或框架的解决方案)

  • 问题内容: 将a 转换为同时保持Queue顺序的最快方法是什么? 问题答案: 最快的方法是首先使用LinkedList,它可用作列表或队列。 否则您需要复印 注意:处理PriorityQueue时,请使用循环,轮询每个元素并添加到列表中。要列出的PriorityQueue不维护堆顺序。

  • 问题内容: 我已经编写了此函数,用于将元组列表转换为列表列表。有没有更优雅的/ Pythonic的方式来做到这一点? 问题答案: 您可以使用列表推导:

  • 我有一个像这样的xsd- 当我使用XJC生成类绑定时,我看到教师是List类型的 如何生成字符串列表而不是对象?任何帮助都很感激。 更新:使用“vamsilp”提供的解决方案——在删除“教师”元素上的“minOccurs”后,它工作得很好!XSD是由泽西从以下代码自动生成的: 我不知道如何删除“minOccurs”属性。我是否需要修改代码以忽略它?

  • 问题内容: 我如何转换 至 问题答案: 使用简单的列表理解: 会给你:

  • 我有一个lambda表达式,我想在其中创建一个对象列表,但我得到了错误 错误 我希望作为lambda表达式的返回类型。我怎样才能做到呢?