1、Map接口概述

        · 将键映射到值的对象
        · 一个映射不能包含重复的键
        · 每个键最多只能映射到一个值
 
2、Map接口和Collection接口的不同
       ·  Map是双列的;Collection是单列的
       ·  Map的键唯一;Collection的子体系Set是唯一的
       ·  Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效
 
3、Map集合的功能概述
  1)添加功能
    V put(K key,V value):添加元素(替换或修改功能)。
        如果键是第一次存储,就直接存储元素,返回null
        如果键不是第一次存在,就用新的值把以前的值替换掉,返回以前的值
  2)删除功能
    void clear():移除所有的键值对元素
    V remove(Object key):根据键删除键值对元素,并把值返回
  3)判断功能
    boolean containsKey(Object key):判断集合是否包含指定的键
    boolean containsValue(Object value):判断集合是否包含指定的值
    boolean isEmpty():判断集合是否为空
  4)获取功能
    Set<Map.Entry<K,V>> entrySet():???
    V get(Object key):根据键获取值
    Set<K> keySet():获取集合中所有键的集合
    Collection<V> values():获取集合中所有值的集合
  5)长度功能
    int size():返回集合中的键值对的对数
 
 例子1:

package mapdemos;
import java.util.HashMap;
import java.util.Map;
/**
* Created by gao on 15-12-21.
*/
public class MapDemo {
public static void main(String[] args) {
// 创建集合对象
Map<String, String> map = new HashMap<String, String>();
// 添加元素
// V put(K key,V value):添加元素
map.put("A1","B1");
map.put("A2","B2");
map.put("A3","B3");
map.put("A4","B4");
// void clear():移除所有的键值对元素
//map.clear(); // map:{}
// V remove(Object key):根据键删除键值对元素,并把值返回
//System.out.println("remove:"+map.remove("A3")); //remove:B3
//System.out.println("remove:"+map.remove("A2")); //remove:B2
// boolean containsKey(Object key):判断集合是否包含指定的键
//System.out.println("containsKey:"+map.containsKey("A2")); //containsKey:true
//System.out.println("containsKey:"+map.containsKey("A6")); //containsKey:false
// boolean isEmpty():判断集合是否为空
//System.out.println("isEmpty:"+map.isEmpty()); //isEmpty:false
//int size():返回集合中的键值对的对数
System.out.println("size:"+map.size()); //size:4
// 输出集合名称
System.out.println("map:" + map);//无序输出
}
}

例子2:

package mapdemos;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* Created by gao on 15-12-21.
*/
/*
* 获取功能:
* V get(Object key):根据键获取值
* Set<K> keySet():获取集合中所有键的集合
* Collection<V> values():获取集合中所有值的集合
*/
public class MapDemo02 {
public static void main(String[] args) {
// 创建集合对象
Map<String, String> map = new HashMap<String, String>();
// 添加元素
// V put(K key,V value):添加元素
map.put("A1", "B1");
map.put("A2", "B2");
map.put("A3", "B3");
map.put("A4", "B4");
// V get(Object key):根据键获取值
System.out.println("get:" + map.get("A3")); //get:B3
System.out.println("get:" + map.get("A6")); //get:null
System.out.println("--------------------------");
// Set<K> keySet():获取集合中所有键的集合
Set<String> set = map.keySet();
for (String key : set) {
System.out.println(key);
}
System.out.println("--------------------------");
// Collection<V> values():获取集合中所有值的集合
Collection<String> col = map.values();
for(String value : col){
System.out.println(value);
}
}
}
例子3:Map集合的遍历
    方式1:根据键找值
        · 获取所有键的集合
        · 遍历键的集合,获取到每一个键
        · 根据键找值

package mapdemos;
/**
* Created by gao on 15-12-21.
*/
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* Map集合的遍历。
* A:获取所有的键
* B:遍历键的集合,获取得到每一个键
* C:根据键去找值
*/
public class MapDemo03 {
public static void main(String[] args) {
// 创建集合对象
Map<String, String> map = new HashMap<String, String>();
// 添加元素
// V put(K key,V value):添加元素
map.put("A1", "B1");
map.put("A2", "B2");
map.put("A3", "B3");
map.put("A4", "B4");
// 遍历
// 获取所有的键
Set<String> set = map.keySet();
// 遍历键的集合,获取得到每一个键
for (String key : set) {
// 根据键去找值
String value = map.get(key);
System.out.println(key + "---" + value);
}
}
}
输出结果:
A2---B2
A1---B1
A4---B4
A3---B3
例子4:Map集合的遍历
    方式2:根据键值对对象找键和值
        · 获取所有键值对对象的集合
        · 遍历键值对对象的集合,获取到每一个键值对对象
        · 根据键值对对象找键和值
package mapdemos;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* Created by gao on 15-12-21.
*/
/**
* Map集合的遍历:
* A:获取所有键值对对象的集合
* B:遍历键值对对象的集合,得到每一个键值对对象
* C:根据键值对对象获取键和值
*/
public class MapDemo04 {
public static void main(String[] args) {
// 创建集合对象
Map<String, String> map = new HashMap<String, String>();
// 添加元素
// V put(K key,V value):添加元素
map.put("A1", "B1");
map.put("A2", "B2");
map.put("A3", "B3");
map.put("A4", "B4");
// 获取所有键值对对象的集合
Set<Map.Entry<String, String>> set = map.entrySet();
// 遍历键值对对象的集合,得到每一个键值对对象
for (Map.Entry<String, String> me : set) {
// 根据键值对对象获取键和值
String key = me.getKey();
String value = me.getValue();
System.out.println(key + "---" + value);
}
}
}
输出结果:
A2---B2
A1---B1
A4---B4
A3---B3

4、Map集合遍历的两种方式比较图解

 
 
 
 

Java API —— Map接口的更多相关文章

  1. JAVA ,Map接口 ,迭代器Iterator

    1.    Map 接口概述 java.util.Map 接口描述了映射结构, Map 接口允许以键集.值集合或键 - 值映射关系集的形式查看某个映射的内容. Java 自带了各种 Map 类. 这些 ...

  2. Java集合Map接口与Map.Entry学习

    Java集合Map接口与Map.Entry学习 Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs).该接口描述了从不重复的键到值的映射. (1) ...

  3. Java Core - Map接口

    Map:是一组映射The java.util.Map interface represents a mapping between a key and a value. The Map interfa ...

  4. java中map接口hashMap以及Enty之间的用法和关系

    java中map接口hashMap以及Enty之间的转换 首先说的是map接口: Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value ...

  5. Java之Map接口(双列集合)

    Map集合概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对 ...

  6. Java 之 Map 接口

    一.Map 接口概述 java.util.Map 接口专门用来存放键值对这种对象关系的对象. 下面比较一下 Collection 与 Map 的区别: Collection 中的集合,元素是孤立存在的 ...

  7. Java集合——Map接口

    1.定义 Map用于保存存在映射关系<key,value>的数据.其中,key值不能重复(使用equals()方法比较),value值可以重复 2.方法 V  put(key,value) ...

  8. Java容器——Map接口

    1.定义 Map用于保存存在映射关系<key, value>的数据.其中key值不能重复(使用equals()方法比较),value值可以重复. 2.常用实现类 HashMap:和Hash ...

  9. Java容器Map接口

    Map接口容器存放的是key-value对,由于Map是按key索引的,因此 key 是不可重复的,但 value 允许重复. 下面简单介绍一下Map接口的实现,包括HashMap,LinkedHas ...

随机推荐

  1. tomcat中server.xml文件解析

    下面我们将讲述这个文件中的基本配置信息,更具体的配置信息见tomcat的文档 元素名 属性 解释 server port 指定一个端口,这个端口负责监听关闭tomcat的请求 shutdown 指定向 ...

  2. hive中简单介绍分区表

    所介绍内容基本上是翻译官方文档,比较肤浅,如有错误,请指正! hive中创建分区表没有什么复杂的分区类型(范围分区.列表分区.hash分区.混合分区等).分区列也不是表中的一个实际的字段,而是一个或者 ...

  3. Android Studio快速开发之道(各种语法糖)

    现如今开发越来越追求效率和节奏,节省出时间做更多的事情,除了开发技术上的封装等,开发工具的使用技巧也是很重要的,今天就根据自己的经验来给大家介绍一下Android Studio快速开发之道. Post ...

  4. VS2010调试入门指南

    1 导言 在软件开发周期中,测试和修正缺陷(defect,defect与bug的区别:Bug是缺陷的一种表现形式,而一个缺陷是可以引起多种Bug的)的时间远多于写代码的时间.通常,debug是指发现缺 ...

  5. 大晚上装CocoaPods出现错误坑爹

    大晚上装CocoaPods出现错误坑爹 [!] Pod::Executable clone 'https://github.com/CocoaPods/Specs.git' master xcrun: ...

  6. WPF 多线程处理(6)

    WPF 多线程处理(1) WPF 多线程处理(2) WPF 多线程处理(3) WPF 多线程处理(4) WPF 多线程处理(5) WPF 多线程处理(6) 以下是子窗体的UI: <Window ...

  7. 在一个Activity里面的TextView上面添加网页链接,启动后到另一个Activity里面!

    可以添加很多的属性,样式或者是什么的,目前要完成的功能是 点击TextView里面的某个文字链接,进入另外一个Activity里面!例如你可以做微博里面的 @XXX: 点击后进入他的个人主页! 下面都 ...

  8. sqlserver 2008r2 表分区拆分问题

    问题描述: 对tab1表实行自动天分区,每天通过sqlserver代理-作业00:00点自动生成分区: 因有次停了数据库服务,sqlserver 代理服务忘记开启,导致当天00:00没有生成新分区: ...

  9. 1833: [ZJOI2010]count 数字计数 - BZOJ

    Description给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次.Input输入文件中仅包含一行两个整数a.b,含义如上所述.Output输出文件中包含一 ...

  10. 怎么让CentOS集群自动同步时间

    怎么让CentOS集群自动同步时间?首先机器要连外网,这样才能从互联网上同步时间,这是首先要了解的.好了,主要的方法如下: 在除了运行ntpd之外的机器上,执行: [html] # chkconfig ...