Java映射匹配键
我面临的问题是: 我有一张包含字符串和字符串的地图。当我打印那张地图时,我能看到有一把钥匙 "0-8166-3835-7". 但当我试图得到它时,没有任何东西可以返回,就像没有找到匹配项一样。。。 我的代码: 我不明白问题出在哪里。。也许这有点像后缀的编码来自一个集合,而键来自一个映射?它们都是绳子。。别这么想。。!!! 所以你能帮忙吗 编辑:如果您发现代码很难阅读,我真的很抱歉:\n我会听从您的建议!! 但如果其他人也有同样的问题,解决办法就是布兰德在下面说的。。(我重新发布)Java映射匹配键,java,map,Java,Map,我面临的问题是: 我有一张包含字符串和字符串的地图。当我打印那张地图时,我能看到有一把钥匙 "0-8166-3835-7". 但当我试图得到它时,没有任何东西可以返回,就像没有找到匹配项一样。。。 我的代码: 我不明白问题出在哪里。。也许这有点像后缀的编码来自一个集合,而键来自一个映射?它们都是绳子。。别这么想。。!!! 所以你能帮忙吗 编辑:如果您发现代码很难阅读,我真的很抱歉:\n我会听从您的建议!! 但如果其他人也有同样的问题,解决办法就是布兰德在下面说的。。(我重新发布) 从文件中读取并
从文件中读取并存储在映射中的字符串中可能有一些空格。如果是这种情况,请在将值存储在映射中之前以及在查询相同字符串之前使用String.trim()布拉德3小时前
谢谢大家我只是想补充一下我的评论,指出问题所在。在比较地图中的关键点时,必须非常小心空格和区分大小写。这些类型的问题通常发生在从文件读取数据时,因为读取的字符并不总是很明显。即使查看调试器whitepsace cna也可能是一个问题
在将数据存储到映射中之前,请始终尝试通过修剪前导和尾随空格来“规范化”数据。您的代码不会显示IsbnFile的来源。。。如果您遵循正常的Java命名约定,那么您的代码也会更容易阅读……正如Jon所说:用小写字母编写变量,这样就不会被错误编码:-/阅读起来非常混乱。方法名也是一样,它们应该是小写的。您确实可能在编码方面有问题。确保以类似的方式创建密钥(不是从UTF-8读取一个密钥,而是从windows编码的文件读取另一个密钥)。从文件读取并存储在映射中的字符串中可能有一些空格。如果是这种情况,则在将值存储到映射中之前,以及在查询相同的字符串之前,请使用String.trim()。显示打印映射的代码并看到键。打印键时,用引号(或其他字符)将其括起来可能会有帮助因此,您可以查看是否包含您没有注意到的任何空白。
//Open a stream to read from file with isbn's AND titles
Scanner IsbnTitle = new Scanner(new FileReader("C:/Users/Proskopos/Documents/NetBeansProjects/ReadUrl/IsbnTitle.txt"));
//Create a Map to save both ISBN's and Titles
Map <String,String> IsbnTitleMap = new HashMap();
while(IsbnTitle.hasNext()){
String recordIsbnTitle = IsbnTitle.nextLine();
UrlFunctions.AddToMap(Recognised , recordIsbnTitle, IsbnTitleMap);
}
.....
.....
Set IsbnSet = new HashSet();
while (IsbnFile.hasNextLine()) {
String isbn = IsbnFile.nextLine();
IsbnSet.add(isbn);
}
//Create an Iterator for IsbnSet
Iterator IsbnIt =IsbnSet.iterator();
String suffix = IsbnIt.next().toString();
String OPACIALtitle = UrlFunctions.GetOpacTitle(suffix, IsbnTitleMap);
static String GetOpacTitle(String opIsbn, Map IsbnTitle) {
String OpacTitle = null;
String isbn = opIsbn;
Map isbnMap = IsbnTitle;
System.out.println(isbn);
if ( isbnMap.containsKey(isbn)){
System.out.println("AAAAAAAAAAAAAAAA");
}
//String tade = isbnMap.get(isbn).toString();
//System.out.println("*************" + tade);
return OpacTitle;
}
static void AddToMap(int Recognise, String recordIsbnfollowed, Map IsbnfollowedMap) {
Map isbnsth = IsbnfollowedMap;
String records = recordIsbnfollowed;
int recs= Recognise;
if (recs == 0 || recs == 3) {
String isbn = records.substring(0, 10);
String title = records.substring(10);
isbnsth.put(isbn, title);
// System.out.println(isbn);
}else if (recs == 1) {
String isbn = records.substring(0, 14);
String title = records.substring(14);
isbnsth.put(isbn, title);
// System.out.println(isbn);
}
}