好的,这就是我必须做的:
将传递的 List
拆分为单独的行,然后使用分隔符拆分这些行,然后将这些部分添加到 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
}
一切正常,但现在我的作业表明,如果任何行的键重复(出现多次),我需要抛出异常。
据我了解,键只能是唯一的,那么我在这里错过了什么?
最佳答案
一旦添加到HashMap
,键就是唯一的,但是您可以通过使用 containsKey(..)
查询 HashMap 来知道您要添加的下一个是否已经存在。或get(..)
方法。
关于java - 如何检查Map是否有重复的key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14554217/