据我所知,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)?
答案 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
时都不重建。