【问题标题】:Add HashMap values in HashMap inside ArrayList without duplicate in Android在 ArrayList 内的 HashMap 中添加 HashMap 值而不在 Android 中重复
【发布时间】:2017-01-16 11:59:23
【问题描述】:
HashMap<key,value> 中存在的一组值。如何通过避免android 中的重复值,在ArrayList 内的HashMap<key,value> 中添加HashMap 值。
【问题讨论】:
标签:
java
android
arraylist
hashmap
duplicates
【解决方案1】:
您的意思是添加从 HashMap 到 ArrayList 的唯一值吗?
如果是,您可以将 HashMap 条目 <K, V> 添加到反向 HashMap <V, K>,然后获取此反向映射的所有键。假设您的键的类类型为K,而您的值的类类型为V:
// change to private if needed
public List<V> getUniqueValues(Map<K, V> originMap) {
Map<V, K> reverseMap = new HashMap<>();
Set<K> keys = originMap.keySet();
Iterator<K> iterator = keys.iterator();
while (iterator.hasNext()) {
K key = iterator.next();
V val = originMap.get(key);
reverseMap.add(val, key);
}
return new ArrayList<>(reverseMap.keySet());
}
【解决方案2】:
要在数组列表中添加 HashMap 值,请使用以下方法:
先声明如下,可以灵活地将值直接添加为aArrayList
ArrayList<HashMap<key,value>>> myArrayHash = new ArrayList<HashMap<key,value>>
向其中添加值:
如果您已经根据问题的声音创建了 HashMap:
myArrayHash.add(HashMapValue);
为避免重复:
您需要在 java 中使用Set Class,因此最终代码将如下所示:
Set<ArrayList<HashMap<key,value>>> hashset = new HashSet<>();
hashset.addAll(myArrayHash);
myArrayHash.clear();
myArrayHash.addAll(hashset);
由于您尚未发布任何代码,因此您需要适当地替换变量值。这是一个很好的例子,可以让你为将来的任何此类问题提供一个通用示例。
【讨论】:
-
在 myArrayHash 添加 hashset 时显示错误(ArrayList> 类型中的方法 add(HashMap) 不适用于参数(Set>>)).