无法使用Android Studio在Java中打印匹配的hashmap键

时间:2015-10-24 01:41:12

标签: java android regex hash

我正在尝试迭代两个哈希映射并打印两个哈希映射中匹配的键。尽管两个哈希映射都有匹配的元素,但它始终是“找不到匹配”。

发布的是我的代码。

       try {

         String s = new String(data);
         String string = new String(input_bytes);
         StringTokenizer stringTokenizer = new StringTokenizer(s);
         StringTokenizer input_stringTokenizer = new  StringTokenizer(string);
        while(stringTokenizer.hasMoreTokens()) 
         {

          map.put(stringTokenizer.nextToken(), stringTokenizer.nextToken());

          }
        while(input_stringTokenizer.hasMoreTokens()) 
          {

          input_map.put(input_stringTokenizer.nextToken(),  
            input_stringTokenizer.nextToken());
           }}
          catch (Exception e1) {
                e1.printStackTrace();
                   }}

          Iterator input1 = map.entrySet().iterator();
          Iterator input_2 = input_map.entrySet().iterator();

         while (input_2.hasNext() && input1.hasNext()) {

            Map.Entry input_val1 = (Map.Entry) input1.next();
            Map.Entry input_val2 = (Map.Entry) input_2.next();
            String temp = input_val1.getKey().toString().substring(input_val1.getKey().toString().lastIndexOf("\\") + 1);
           String temp_2 = input_val2.getKey().toString().substring(input_val2.getKey().toString().lastIndexOf("\\") + 1);

          if(temp.equals(temp_2))
                  {

                    System.out.println("element matched");
                   }
                  else
                     {
                         System.out.println("no match found!");
                      }
                      }

我的输入文件是“data”和“input_bytes”

这些文件中的路径是“密钥”,散列是散列映射的“值”。

为了有效匹配,我修剪了路径,使得它只给出了最后一次斜线后的元素。

代码中的

“temp”变量将按以下方式打印:

 com.example.android.notepad_4.4.2-eng.build.20150616.1901504.apk ﹕  
 com.facebook.orca_34.0.0.22.2114.apk
 com.android.contacts_4.4.2-eng.build.20150616.1901504.apk
 com.amazon.venezia_release-13.0003.844.1C_6430003104.apk
 com.android.deskclock_3.0.04.apk
 com.google.android.apps.photos_1.0.0.943910814.apk
 apuslauncher-2.apk
 com.android.vending-v5.8.11-80381100-Android-2.3.apk
 net.sylark.apkextractor_1.0.54.apk

以下是我的“数据”文件的样子:

  C:\Users\rishii\Desktop\input_3\com.amazon.venezia_release-  
  13.0003.844.1C_6430003104.apk
  266796d1b8e2e016753ee3bf1b50e591
  C:\Users\rishii\Desktop\input_3\com.android.browser_4.4.2-  
  eng.build.20150616.1901504.apk
  4aa2091b0e21fc655e19d07e2ae20982
  C:\Users\rishii\Desktop\input_3\com.android.calculator2_4.4.2-  
  eng.build.20150616.1901504.apk
  85313ccbd39a43952906b70b941d321b
  C:\Users\rishii\Desktop\input_3\com.android.calendar_4.4.2-  
  eng.build.20150616.1901504.apk
  3c85cb87f2e134a4157e5f3747e4df1b                         

这是我的“input_bytes”文件,如下所示:

C:\Users\rishii\Desktop\baal\com.amazon.venezia_release- 
13.0003.844.1C_6430003104.apk
266796d1b8e2e016753ee3bf1b50e591
C:\Users\rishii\Desktop\baal\com.android.browser_4.4.2-  
eng.build.20150616.1901504.apk
4aa2091b0e21fc655e19d07e2ae20982
C:\Users\rishii\Desktop\baal\com.android.calculator2_4.4.2-   
eng.build.20150616.1901504.apk
85313ccbd39a43952906b70b941d321b
C:\Users\rishii\Desktop\baal\com.android.calendar_4.4.2-   
eng.build.20150616.1901504.apk
3c85cb87f2e134a4157e5f3747e4df1b
C:\Users\rishii\Desktop\baal\com.android.camera2_2.0.002-  
eng.build.ef73894.060315_142358-704.apk
482205cda6991f89fb35311dea668013

如果你能看到两个文件中都有一些匹配。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这是检查它们是否包含相同密钥的更简单方法:

public void findSameKeys(Map<String, String> map1, Map<String, String> map2) {
    for (String key : map1.keySet()) {
        if (map2.containsKey(key)) {
            System.out.println("Matching key: " + key);
        }
    }
}

containsKey()方法在这里非常有用。