1
Q
識別具有重複值
A
回答
2
這是可以做到這樣的:
// Initialize my multimap
Multimap<String, String> multimap = ArrayListMultimap.create();
multimap.put("20014", "13123");
multimap.put("20013", "45451");
multimap.put("20013", "13123");
// Set in which we store the values to know if they exist already
Set<String> allValues = new HashSet<>();
// Convert the multimap into a Map
Map<String, Collection<String>> map = multimap.asMap();
// Iterate over the existing entries
for (Map.Entry<String, Collection<String>> entry : map.entrySet()) {
String key = entry.getKey();
Collection<String> values = entry.getValue();
// Iterate over the existing values for a given key
for (String value : values) {
// Check if the value has already been defined if so print a log message
if (!allValues.add(value)) {
System.out.println(String.format("Key-%s,Value-%s", key, value));
}
}
}
輸出:
Key-20013,Value-13123
1
您可以反你的多重映射,並看作是一個地圖,通過其輸入迭代:
Multimap<String, String> inverse = Multimaps.invertFrom(multimap, HashMultimap.create());
for (Map.Entry<String, Collection<String>> entry : inverse.asMap().entrySet()) {
String value = entry.getKey();
Iterator<String> keysIterator = entry.getValue().iterator();
assert keysIterator.hasNext() : "there is always at least one key";
keysIterator.next(); // skip first key
while (keysIterator.hasNext()) { // each additional key is a duplicate
String key = keysIterator.next();
System.out.println(String.format("Key-%s,Value-%s", key, value));
}
}
輸出:
Key-20013,Value-13123
如果您使用的是ImmutableMultimap
然後代替Multimaps.invertFrom(Multimap, M)
,你可以簡單地使用ImmutableMultimap.inverse()
:
ImmutableMultimap<String, String> inverse = multimap.inverse();
如果你只是想重複值的地圖,以各自的密鑰,那麼你可以使用Maps.filterValues(Map, Predicate)
:
Map<String, Collection<String>> keysByDuplicatedValue = Maps.filterValues(inverse.asMap(),
keys -> keys.size() > 1);
,這將給你一個地圖象下面這樣:
{13123=[20014, 20013]}
相關問題
- 1. MS Access - 識別具有最小值的重複項
- 2. 識別重複的值與jQuery
- 3. 識別列中的重複值 - Spotfire
- 4. 使用熊貓識別指定列中具有重複值的記錄
- 5. DropDownList具有重複值
- 6. 在/ etc/passwd文件中識別具有重複用戶標識的用戶名
- 7. 重複識別算法
- 8. 識別,刪除重複項
- 9. 識別重複的瓷磚
- 10. 識別複數
- 11. 具有多個重複值的Vlookup
- 12. 查找並具有重複列值
- 13. 具有重複值的Ada枚舉
- 14. 具有重複值的快速排序
- 15. 識別重複的記錄行
- 16. 基於多列識別重複項
- 17. Python識別重複的字典鍵
- 18. 識別Bug跟蹤的重複例外
- 19. LINQ查詢無法識別重複項
- 20. 在Javascript中識別重複函數
- 21. VLOOKUP能否識別重複數字?
- 22. Microsoft Speech Platform:識別單詞重複
- 23. 識別列表中的重複列表?
- 24. 如何識別重複的程序集?
- 25. 識別VB數組中的重複項
- 26. IE不會識別不重複?
- 27. 多線程:識別重複對象
- 28. 使用PHP識別重複模式
- 29. COUNT-SQL如何識別重複
- 30. 識別重複項並刪除
其中Multimap?番石榴一個? –
是的番石榴一個。 – Leo
爲什麼不是鍵-20014,值13123? – Henry