我正在尝试迭代两个哈希映射并打印两个哈希映射中匹配的键。尽管两个哈希映射都有匹配的元素,但它始终是“找不到匹配”。
发布的是我的代码。
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
如果你能看到两个文件中都有一些匹配。非常感谢任何帮助。
答案 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()
方法在这里非常有用。