我有两个map的大致结构如下:
【idmap】
111 aaa
113 bbb
114 ccc
115 aaa
116 ddd
【shamap】:
1 aaa
2 bbb
3 ccc
4 ddd
需要得到的结果是:
1 aaa 111
2 bbb 113
3 ccc 114
1 aaa 115
4 ddd 116 这种的。
就是说,shamap里面存的是没有重复的,然后每个value都对应一个序列1,2,3.....
我需要做的其实就是将shamap里面的value的值的序号加到idmap里面,idmap里面相同value的序号是一样的。
我想的是在一个idmap的迭代里面再放入shamap的迭代,然后判断两个map的value是否相同再输出。但是结果总是不对
Iterator<String> it = idmap.keySet().iterator();
Iterator<String> it2 = shamap.keySet().iterator();
while(it.hasNext()) {
String count = null;
String key = it.next();
String value = idmap.get(key);
while(it2.hasNext()){
String col = it2.next();
String value2 = shamap.get(col);
if (value.equals(value2)){
count= col;
}
}
System.out.println(count+" "+value+" "+key);
}
结果却只显示第一个的。。不知道是哪里逻辑不对,该怎么改呢。
1 aaa 111
null bbb 112
null ccc 114
null aaa 115
null ddd 116
Iterator hanya boleh mengulang sekali, disyorkan untuk menggunakan set masuk untuk melakukannya
Lelaran hanya boleh dilalui sekali, jadi lelaran dalaman tidak boleh melintasi keseluruhan peta setiap kali Pengubahsuaian mudah ialah meletakkan baris kod yang memperoleh lelaran shamap ke dalam sementara pertama.
PS: Jika anda boleh memastikan surat-menyurat satu dengan satu antara kunci dan nilai dalam shamap, anda boleh mempertimbangkan untuk menggunakan BiMap jambu, yang boleh mencari kunci daripada nilai dengan cara ini gelung bersarang, dan kecekapan akan lebih tinggi.