2015-10-24 52 views
1

我正在嘗試迭代兩個哈希映射並打印在兩者中都匹配的鍵。儘管兩個哈希映射都有匹配的元素,但它始終如一地說「不」匹配找到「。無法使用Android Studio在Java中打印匹配的hashmap密鑰

以下是我的代碼。

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

我的輸入文件是「數據」和「input_bytes」

這些文件的路徑爲「鑰匙」和哈希是HashMap中的「價值」。

對於有效匹配,我修剪了路徑,使得它只給出最後一個斜槓後面的元素。

「臨時」的代碼變量將通過以下方式進行打印:

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 

如果你可以看到有兩個files.Any幫助將非常欣賞特德。

回答

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()方法是非常有用的在這裏。

相關問題