【问题标题】:Two Java strings same value differerent Eclipse ids don't HashMap right两个 Java 字符串相同的值不同的 Eclipse id 不正确 HashMap
【发布时间】:2020-03-19 05:52:32
【问题描述】:

这是代码(类名来自 Knime):

    HashMap<String,DataColumnSpec> rcols = new HashMap<String, DataColumnSpec>();
    rightSpec.forEach(rs -> { rcols.put(rs.getName(), rs); });
    DataColumnSpec[] jcols = leftSpec.stream()
        .filter(s -> rcols.containsKey(s.getName()))
        .toArray(DataColumnSpec[]::new);

结果是空的,但它不应该是!确实有一个匹配的列!

这是调试器截图:

注意第一个实例中的 P# id=14978 和第二个 id=666。

这里发生了什么?我该怎么做才能解决它?

【问题讨论】:

  • 任一字符串中的非打印字符?
  • @OleV.V.:太棒了!靶心!我希望我能想到这一点。我会发布答案。

标签: java hashmap knime


【解决方案1】:

遗憾的是,答案是其中一个字符串中的非打印字符。数据源是 Knime 上的 FileReader 节点,它有一个处理 UTF-8-BOM 数据文件的错误。它将一个 NUL 字符注入到它读取的第一个字符串中,这在调试器中是不可见的,但会抛出所有比较。

完全归功于@Ole V.V.我只是没想到。吸取教训!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 2014-11-03
    • 1970-01-01
    • 2018-12-28
    相关资源
    最近更新 更多