首先列举出Map的若干简单操作。
int size()
返回此映射中的键-值映射关系数
boolean isEmpty()
如果此映射未包含键-值映射关系,则返回 true
V get(Object key)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
boolean containsKey(Object key)
如果此映射包含指定键的映射关系,则返回 true
boolean containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 true。
boolean equals(Object o)
比较指定的对象与此映射是否相等(比较两个Map是否相等)
V put(K key, V value)
将指定的值与此映射中的指定键关联,如果这个Map之前包含这个键的映射,那么旧的映射值将被替换并返回,反之则返回null
void putAll(Map<? extends K, ? extends V> m)
从指定映射中将所有映射关系复制到此映射中
V remove(Object key)
如果存在一个键的映射关系,则将其从此映射中移除并返回该映射值,如不存在则返回null
void clear()
从此映射中移除所有映射关系
下面重点说一下Map遍历的几种方式:
第一种:最常规的一种遍历方法,但不能直接获取到key值
public static void main(String[] args){
Map<String,String> map = new HashMap<String,String>();
map.put("name","sbw");
map.put("birth","haerbin");
map.put("work", "beijing");
Collection<String> c = map.values();
Iterator<String> i = c.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}
第二种:利用keyset进行遍历,能够根据key值得到,并可根据key值获得value。
public static void main(String[] args){
Map<String,String> map = new HashMap<String,String>();
map.put("name","sbw");
map.put("birth","haerbin");
map.put("work", "beijing");
Set<String> set = map.keySet();
Iterator<String> i = set.iterator();
while(i.hasNext()){
System.out.println(i.next());//遍历出所有key
System.out.println(map.get(i.next()));//根据key值获得value;
}
}
第三种:利用entrySet进行遍历,key值和value值可以同时获得
public static void main(String[] args){
Map<String,String> map = new HashMap<String,String>();
map.put("name","sbw");
map.put("birth","haerbin");
map.put("work", "beijing");
//Map.Entry是Map声明的一个内部接口,它表示Map中的一个实体(一个key-value对)。
Set<Map.Entry<String, String>> entry = map.entrySet();
Iterator<Map.Entry<String,String>> i = entry.iterator();
while(i.hasNext()){
Map.Entry<String,String> e = i.next();
System.out.println(e.getKey());//返回key值
System.out.println(e.getValue());//返回value值
}
}
第四种:上述用到的Iterator都可以用foreach代替
具体的性能问题就不说了,需要根据实际需求衡量选择。
本文深入探讨了Map数据结构的使用,包括基本操作、遍历方式及其性能考量。通过实例展示了如何高效地进行Map的查找、修改和迭代。
3243

被折叠的 条评论
为什么被折叠?



