【问题标题】:Anagram code meaning字谜代码含义
【发布时间】: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 -&gt; new ArrayList&lt;String&gt;()).add(word);

标签: java arraylist anagram


【解决方案1】:

部分

m.put(alpha, l=new ArrayList<String>());

也可以写成

l=new ArrayList<String>();
m.put(alpha, l);

分配返回分配的值,这就是您的代码正常工作的原因。

【讨论】:

  • 好的,谢谢你,但我想知道 l 将包含什么, l 的值是空数组?
  • @user3386952 是的,l 将包含当前在地图中的内容,如果不在地图中,则会添加一个空的 ArrayListl 将引用它。跨度>
猜你喜欢
  • 2017-02-13
  • 2013-07-02
  • 2016-06-14
  • 2018-04-09
  • 2011-02-03
  • 2018-12-15
  • 2022-11-07
  • 2015-03-01
  • 2017-10-27
相关资源
最近更新 更多