您的位置:首页 > 编程语言 > Java开发

我爱学Java之Map操作详解

2016-03-12 15:28 453 查看
首先列举出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代替

具体的性能问题就不说了,需要根据实际需求衡量选择。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: