我必须解析两个大文本文件。每个文件都包含从本地标识符到字符串值的字符串映射。 local-identifier实际上只是一个临时密钥。稍后映射应该是从值(file1)到值(file2)。
所以我做的是:
我为验证所做的是: 对于每个localid
会发生的是,步骤d)中的两个值在15%的键值对中不相等。
实际上那里有某种系统...例如N2c变为[N] 2c,[nH] 1c3c变为n1c3c,(N)变为([NH])
Java是否可能将String解释为正则表达式或者有其他人的想法?
非常感谢
编辑:好的,这里有一些代码^^是的,这更具可读性......对不起...... HashMap<String, String> idToFile1 = File1.getMapping();
HashMap<String, String> idToFile2 = File2.getMapping();
HashMap<String, String> file1ToFile2 = new HashMap<String, String>();
for(String localid : smilesfragments.keySet()){
inchiToSmiles.put(idToFile1.get(localid), idToFile2.get(localid));
}
for(String localid : idToFile1.keySet()){
String file1val = idToFile1.get(localid);
String file2val = idToFile2.get(localid);
if(!file2val.equals(file1ToFile2.get(file1val))){
System.err.println("mismatch!");
}
}
我在15%的情况下得到了不匹配
答案 0 :(得分:1)
如果不同的标识符可以具有相同的值,则第三个映射将保留最后一个解析的映射。例如。 :
文件1:
文件2:
您的第一张和第二张地图会将此映射存储在您的文件中。
但是,当你构建第三张地图时,你会得到:
正如您所看到的,当您验证解析文件时,您将收到localId1的错误(文件1中的“aaaa”,文件2中的“1111”,但“aaaa”=&gt;“ 4444“在第三张地图中。”
如果无法确保文件中值的唯一性,则无法在地图中存储“文件1中的值”=&gt; “文件2中的值”。
这可以解释15%的错误。