【问题标题】:Adding an element into a HashSet inside a HashMap Java [closed]将元素添加到 HashMap Java 中的 HashSet [关闭]
【发布时间】:2016-05-24 20:25:39
【问题描述】:

我有这个问题,我在网上寻找,我可以得到帮助......我也看了其他问题,但他们没有工作我不知道为什么......所以我需要你的帮助......

所以这是我创建 HashMap 的字段:

private HashMap <String,HashSet<String>> userBuisness = new HashMap <String,HashSet<String>>();

这是我添加元素的尝试(我从文件中取出一行,将其拆分,然后将这些元素添加到我的 HashMap 中):

String output = inputReader.nextLine();
String fields[] = output.split("\t");
userBuisness.put(fields[0],fields[1]);

【问题讨论】:

  • fields[1]String,而不是 HashSet&lt;String&gt;。您可以使用new HashSet&lt;&gt;(Arrays.asList(fields[1])) 构建后者。
  • 安迪告诉你如何在地图中插入这样的条目。但是...为什么您的地图值需要 HashSet&lt;String&gt; 类型?您的代码 sn-p 表明您只输入了 String 类型的值。
  • @Seelenvirtuose 这就是我的项目所要求的

标签: java hashmap


【解决方案1】:

正如@AndyTurner 在评论中所说:

fields[1]String,而不是 HashSet&lt;String&gt;。您可以使用new HashSet&lt;&gt;(Arrays.asList(fields[1])) 构建后者。

但是这个 sn-p 还有其他问题。最好这样重写,密切关注我改变的每一个小细节:

private Map<String, Set<String>> userBusiness = new HashMap<>();

...

String[] fields = output.split("\t");
userBusiness.put(fields[0], new HashSet<>(Collections.singletonList(fields[1])));

【讨论】:

  • 你知道,我敢打赌代码在循环中,如果输入是A BA C,结果应该是{A=[B, C]},而不是这段代码给出的{A=[C]} .否则,为什么要让它成为地图集,对吧?
  • 是的,它在一个while循环中。直到文件有下一行
猜你喜欢
  • 2014-05-01
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
相关资源
最近更新 更多