两个Java字符串相同值不同Eclipse ID的哈希映射不正确

两个Java字符串相同值不同Eclipse ID的哈希映射不正确,java,hashmap,knime,Java,Hashmap,Knime,以下是来自Knime的代码类名称: HashMap<String,DataColumnSpec> rcols = new HashMap<String, DataColumnSpec>(); rightSpec.forEach(rs -> { rcols.put(rs.getName(), rs); }); DataColumnSpec[] jcols = leftSpec.stream() .filter(s -> r

以下是来自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


这是怎么回事?我该怎么做才能修复它呢?

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


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

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


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

两个字符串中的一个非打印字符?@OleV.V:太棒了!布尔西!我真希望我想到了那一点。我会发布答案。两个字符串中都有一个非打印字符?@OleV.V:太棒了!布尔西!我真希望我想到了那一点。我会把答案贴出来。