[英]Java Map Matching Key
我面临的问题是:我的地图包含字符串和字符串。 当我打印该地图时,我可以看到有一个键“ 0-8166-3835-7”。 但是,当我尝试获取它时,没有任何东西可以返回,就像找不到匹配项...我的代码:
//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);
上面的代码是MAP中main的唯一部分,下面是我调用的函数:
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);
}
}
我无法理解问题出在哪里。也许后缀的编码来自一组,而键来自地图? 他们都是字符串..不这么认为.. !!! 所以? 你能帮我吗?
编辑:如果您觉得代码难以阅读,我将深表歉意:\\我将按照您的建议! 但是,如果其他人遇到相同的问题,解决方案将是布兰德在下面说的..(我重新发布)
您可能正在从文件读取并存储在Map中的字符串中包含一些空格。 如果是这种情况,请在将值存储在Map中之前以及在查询同一字符串之前使用String.trim()。 –布拉德3小时前
谢谢你们
只是要添加到我的发现问题的评论中。 在比较地图中的按键时,您必须非常注意空白和区分大小写。 这些类型的问题通常是在从文件中读取数据时发生的,因为并非总是很清楚正在读取哪些字符。 即使在调试器中查看whitepsace cna也是一个问题。
在将数据存储在地图中之前,请始终尝试通过修剪前导和尾随空白来“标准化”数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.