繁体   English   中英

Java Map匹配密钥

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM