Java地图匹配键

时间:2011-11-04 12:39:00

标签: java map

我遇到的问题是: 我有包含字符串和字符串的地图。当我打印该地图时,我可以看到有一把钥匙 “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的主要部分,下面是我调用的函数:

    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);
        }
    }

我无法理解问题出在哪里..也许它就像是来自一个集合的后缀的编码,以及来自地图的密钥?他们都是字符串..不要这么认为.. !!! 所以?你能帮忙吗?

编辑:如果您发现代码难以阅读,我很抱歉:\我会按照您的建议! 但是,如果其他人有同样的问题,那么解决方案就是Brand在下面所说的..(我重新发布)

  

您可能在字符串中有一些空格,您正在从文件中读取并存储在地图中。如果是这种情况,请在将值存储在Map中之前使用String.trim(),并在查询相同的字符串之前使用。 - 布拉德3小时前

谢谢大家

1 个答案:

答案 0 :(得分:0)

只是添加我的评论,确定了问题。比较地图中的键时,您必须非常小心空白区域和区分大小写。从文件读取数据时通常会出现这些类型的问题,因为并不总是很清楚正在读取哪些字符。即使查看调试器whitepsace cna也是一个问题。

在将数据存储到地图中之前,请务必通过修剪前导和尾随空格来“规范化”数据。