【发布时间】:2016-12-06 17:59:38
【问题描述】:
在下面的代码中,下面一行是什么意思?
m.put(alpha, l=new ArrayList<String>());
代码(用于查找字谜):
try {
Scanner s = new Scanner(new File(args[0]));
while (s.hasNext()) {
String word = s.next();
String alpha = alphabetize(word);
List<String> l = m.get(alpha);
if (l == null)
m.put(alpha, l=new ArrayList<String>());
l.add(word);
}
} catch (IOException e) {
System.err.println(e);
System.exit(1);
}
【问题讨论】:
-
取决于
m是什么。如果您对作为函数参数的赋值感到困惑,请记住在 Java 中赋值是一个运算符,就像+。它的结果是被赋值的值,加上它有改变变量值的副作用。 -
您的完整代码需要以minimal reproducible example 的形式出现。但看起来你有一个哈希图。有什么不明白的?
-
在 Java 8 中,这将是
m.computeIfAbsent(alpha, l -> new ArrayList<String>()).add(word);