Java-Map用法简介

来源:互联网 发布:电信光猫有几个端口 编辑:程序博客网 时间:2024/05/16 16:23


本文将对Map接口进行一些简单介绍,包括继承关系、常用方法,还有遍历。

 

Java API - Map:http://docs.oracle.com/javase/8/docs/api/java/util/Map.html

Java API中对Map的描述

l  Map是一个能将键(keys)映射到值(values)的对象,一个Map对象不能包含重复的键,但是可以包含重复的值。

l  Map接口提供了三种查看方式,分别是a set ofkeys, collection of values, or set of key-value mappings这里没有进行翻译,因为我觉得这里翻译不太好。set在这里指的是Set接口的对象,collection指的是Collection接口的对象。在后面方法介绍的时候会讲。

 

 

一、继承关系


其实Java中Map的继承关系远比这复杂,不过大部分情况这个图很够用了。常用的就是HashMap(无序)和TreeMap(有序)

 

二、常用方法简介

1.       clear()

很常规的清空方法

 

2.       containsKey(Object key)

判断一个Map对象是否包含该键

 

3.       containsValue(Object value)

判断一个Map对象是否包含该值

 

4.       entrySet()

一种Map查看方式,返回的是Set<Map.Entry<K,V>>,其中Map.Entry<K,V>表示Java键值对,一般用来遍历,而且效率高于keySet()+get配合使用。

 

5.       forEach(BiConsumer<? superK,? super V> action)

forEach方法,一般用来遍历,如果map为空会抛出空异常,使用前最好判空

 

6.       get(Object key)

由键获取值的方法

 

7.       isEmpty()

判空

 

8.       keySet()

返回键的集合表示,因为map中的键是唯一且无序的,所以用Set表示

 

9.       put(K key, V value)

添加方法,类似Collection.add()

 

10.    putAll(Map<? extends K,?extends V> m)

添加方法,类似Collection.addAll()

11.    remove(Object key)

remove方法,只需要键匹配就执行操作

 

12.    remove(Object key, Objectvalue)

remove方法,需要键和值同时匹配才执行操作

 

13.    size()

返回键值对的个数,很普通的size方法

 

14.    values()

返回类型是Collection<V>,因为值可能相同,所以不能像key那样用Set方法

 

 

三、Map的遍历

Map的遍历可以分为四种,因为4=2*2,在遍历方式中可以用foreach和迭代器两种,获取键值对可以用entrySet和keySet+ get()。建议采用foreach和entrySet方法(示例中第一种方法),最简洁而且效率最高。

 

直接上代码:

 

import java.util.*;public class JavaAPIMap {    public static void main(String[] args) {        //新建一个空的Map        Map<String, Integer> map = new HashMap<String, Integer>();        //添加值        map.put("a", 1);        map.put("b", 2);        map.put("c", 3);        //1. foreach 配合 entrySet()        for (Map.Entry<String, Integer> entry : map.entrySet()) {            System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());        }        System.out.println("------------------");        //2. foreach配合keySet()和get()        for (String key : map.keySet()) {            System.out.println("Key = " + key + ", Value = " + map.get(key));        }        System.out.println("------------------");        //3. 迭代器Iterator配合entrySet()        Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();        while (iterator.hasNext()){            Map.Entry<String, Integer> entry = iterator.next();            System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());        }        System.out.println("------------------");        //4. 迭代器Iterator配合keySet()和get()        Iterator<String> keyIterator = map.keySet().iterator();        while (keyIterator.hasNext()){            String key = keyIterator.next();            System.out.println("Key = " + key + ", Value = " + map.get(key));        }    }}

 

程序结果:

Key = a,Value = 1

Key = b,Value = 2

Key = c,Value = 3

------------------

Key = a,Value = 1

Key = b,Value = 2

Key = c,Value = 3

------------------

Key = a,Value = 1

Key = b,Value = 2

Key = c,Value = 3

------------------

Key = a,Value = 1

Key = b,Value = 2

Key = c, Value = 3

原创粉丝点击