插入到hashmap中,计算Set中的重复项?

时间:2017-10-29 19:57:13

标签: java hashmap set

据我所知,Java集中不允许重复。为什么然后在这段代码中代码似乎试图考虑重复?

public static Subarray findSmallestSubarrayCoveringSet(List<String> paragraph,Set<String> keywords) {

   Map<String, Integer> keywordsToCover = new HashMap<>();
   for (String keyword : keywords) {
      keywordsToCover.put(keyword,
      keywordsToCover.containsKey(keyword)? keywordsToCover.get(keyword) + 1: 1);
   }

为什么不在for循环中使用keywordsToCover.put(keyword,1)?

2 个答案:

答案 0 :(得分:1)

你在这里是正确的,电话for testName, testSet in tests do for input, expected in testSet do try let result = unsafeSort input printfn "- %b" (result = expected) with | _ as ex -> printfn "error occured" 永远不会 。似乎编写代码的人不明白keywordsToCover.containsKey(keyword)的目的是什么,或者他们错误地这样做了(虽然这不太可能)。因此,呼叫Set就足够了。

答案 1 :(得分:0)

你是正确的,正如the Javadoc中所说:

  

Set是一个不包含重复元素的集合。

谁写过那个样本并不知道这个事实。

从不keywordsToCover.containsKey(keyword)返回 true 的情况,除非keywordsToCover被初始化(在方法之外)为静态且是每次调用findSmallestSubarrayCoveringSet都不重建。