在Java中,是否有一种原生数据结构可以接受键值对并允许重复?我正在创建一个字符串中字符的清单,但某些字符出现了多次。
例如:
j -> false
a -> false
v -> false
a -> false
在Java中,是否有一种原生数据结构可以接受键值对并允许重复?我正在创建一个字符串中字符的清单,但某些字符出现了多次。
例如:
j -> false
a -> false
v -> false
a -> false
Character
对象,而值是Boolean
,您可以执行:Map<Character, List<Boolean>> multimap = new HashMap<Character, List<Boolean>>();
每当您想向地图中的现有KV对添加新值时,只需调用
multimap.get(key).add(value);
其中 key
代表字符,value
代表对应的 Boolean
值。
Google
的 Guava
库(免费下载)实现了多种方式的 Multimap 接口,因此您可以实例化一个 MultiMap<Character, Boolean>
映射并相应地使用它。同样,您可以获取 Apache Commons Collections
库并使用其 MultiValueMap
类。您还可以查看类似于 此StackOverflow问题的答案或者 其他问题。
如果您只想为每个键存储一个值,则应该在 List
的位置使用 Set
。
J, [F] | A [F,F] | V [F]
- LiondancerList
的Pair
列表:public class Pair<T, U> {
public final T key;
public final U value;
public Pair(T key, U value) {
this.key = key;
this.value = value;
}
}
public class YourApp {
public static void main(String[] args) {
List<Pair<Character, Boolean>> charList = new ArrayList<Pair<Character, Boolean>>();
charList.add(new Pair('j', false));
charList.add(new Pair('a', false));
charList.add(new Pair('v', false));
charList.add(new Pair('a', false));
for (Pair<Character, Boolean> pair : charList) {
System.out.println(pair.key + " -> " + pair.value);
}
}
}
Pair
类,您可以持有任何类型的键和值。如果您将对成对添加到 List
中,则可以保留重复的对条目。MultiMap<Character,Boolean>
,因为它允许重复的键存在于org.apache.commons.collections
包中。ArrayList
,并添加包含字符和布尔值对属性的Class
对象。我不知道有内置的解决方案。
一个快速的替代方案是使用简单的ArrayList,并创建一个对象,该对象是char / boolean对,您可以将其添加到其中。
commons.apache.org有MultiHashMap类。尝试使用它...!!!
MultiHashMap mp = new MultiHashMap();
mp.put("a", "1");
mp.put("b", "4");
mp.put("c", "2");
mp.put("a", "6");
List list = null;
Set set = mp.entrySet();
Iterator i = set.iterator();
while (i.hasNext()) {
Map.Entry<String, List<String>> me = (Map.Entry) i.next();
for(int j = 0 ; j< me.getValue().size(); j++ ){
System.out.println(me.getKey() +" : " +me.getValue().get(j));
}
}
}