如何检查Map是否有重复键?

Non*_*one 2 java map

好的,这就是我要做的事情:

将传递的内容拆分List为单独的行,然后使用分隔符拆分这些行,然后将这些部分添加到a Map.

我的代码:

public GrammarSolver(List<String> rules) {
    if(rules == null || rules.size() == 0) {
        throw new IllegalArgumentException();
    }
    Map<String, String> rulesMap = new HashMap<String, String>();
    Iterator<String> i = rules.iterator();
    while(i.hasNext()) {
        String rule = i.next(); // store a line from 'rules' List
        String[] parts = rule.split("::="); // split the line into non-terminal and terminal
        rulesMap.put(parts[0], parts[1]); // Put the two parts into the map
    }
    // TODO: exception when duplicate key in map
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但现在我的任务说如果任何行的键重复(发生多次),我需要抛出异常.

根据我的理解,钥匙只能是唯一的,所以我在这里缺少什么?

Jac*_*ack 8

一旦添加到密钥,密钥就是唯一的HashMap,但是您可以通过使用containsKey(..)get(..)方法查询哈希映射来了解您要添加的下一个密钥是否已经存在.

  • 我想你应该自己在文档中阅读它:http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html#put(K,V). (3认同)