1.定义

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

2.方法

V  put(key,value):添加元素

V  get(Object key):获取指定key的元素

Set<k>  keySet():返回指定对象key的集合

Collection  values():返回指定对象value的集合

V  remove(Object key):移除指定key的元素,并且返回对应值的引用

Set<Map.Entry<k,v>>  entrySet():返回映射中包含映射关系的视图

注:Map接口没有继承Iterable接口,所以不能直接通过map.iterator进行遍历(List,Map拥有该接口,可以直接遍历),需要先转化为set类型,使用entrySet()方法,Map.Entry<k,v>中含有方法getKey()和getValue(),获取对应的键和值。

3.常用实现类

HashMap:和HashSet类似,键按键的HashCode()方法确定存储位置,无序

TreeMap:用于对键进行排序,方式与TreeSet相同

LinkedHashMap:和LinkedHashSet类似

4.实例

import static org.junit.Assert.*;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.junit.Test;
import day8.Customer;

public class TestMap {
    @Test
    public void testMapMethods(){
        Map m1=new HashMap();
        //put(key,value)添加元素
        m1.put("aa", new Customer(1,"AA"));
        m1.put("bb", new Customer(2,"BB"));
        m1.put("cc", new Customer(3,"CC"));
        m1.put("dd", new Customer(4,"DD"));
        System.out.println(m1.size());      
        Map m2=new HashMap();
        m2.put("aa", new Customer(1,"AA"));
        m2.put("bb", new Customer(2,"BB"));
        m2.put("cc", new Customer(3,"CC"));
        m2.put("dd", new Customer(4,"DD"));       
        Map<String,Object> m3=new HashMap();
        m3.put("aa", new Customer(1,"AA"));
        m3.put("bb", new Customer(2,"BB"));
        m3.put("cc", new Customer(3,"CC"));
        m3.put("dd", new Customer(4,"DD"));     
                    //比较两对象是否相等时,重写Object的equals()方法,如果键值对完全相同,返回true.
        System.out.println(m1.equals(m2));    
                   //get(Object key)获取指定key的元素
        System.out.println(m1.get("bb"));     
                  //keySet()返回指定对象key的集合

//增强for循环遍历操作
        Set keySet=m1.keySet();
        for(Object key:keySet){
            System.out.println(key);
        }      
                  //values()返回指定对象value的集合
        Collection value=m1.values();
        for(Object val:value){
            System.out.println(val);
        }
        System.out.println();      
               //遍历操作
               //方法一:先得到键的集合,对键进行遍历时得到值
        for(Object key:keySet){
            Object val=m1.get(key);
            System.out.println(key+" : "+val);
        }
        System.out.println();       
               //方法二:得到键值对的集合
        for(Entry<String,Object> entry:m3.entrySet()){
            System.out.println(entry.getKey()+" : "+entry.getValue());
        }
        System.out.println();         
              //remove(Object key)移除指定key的元素,并且返回对应值的引用
        Object obj=m1.remove("aa");
        System.out.println(obj);
        System.out.println(m1.size());                
    }
}

涉及的完整代码:http://www.cnblogs.com/jfl-xx/p/4707643.html

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

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

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

  2. Java 集合-Map接口和三个子类实现

    2017-10-31 22:05:59 Map 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. HashMap是基于散列表实现的,插入.删除和定位元素时间复杂度平均能达到O ...

  3. Java集合-Map接口相关操作方法

    Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs). 该接口描述了从不重复的键到值的映射. (1) 添加.删除操作: Object put(Ob ...

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

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

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

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

  6. Java Core - Map接口

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

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

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

  8. Java 之 Map 接口

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

  9. Java从零开始学二十三(集合Map接口)

    一.Map接口 Collection.Set.List接口都属于单值的操作,即:每次只能操作一个对象,而Map与它们不同的是,每次操作的是一对对象,即二元偶对象,Map中的每个元素都使用key à v ...

随机推荐

  1. CUBRID学习笔记 40 使用net修改数据

    修改 connection.Open();     string queryString = "UPDATE nation set capital = 'X' where `code` = ...

  2. CUBRID学习笔记 1 简介 cubrid教程

    CUBRID 是一个全面开源,且完全免费的关系数据库管理系统.CUBRID为高效执行Web应用进行了高度优化,特别是需要处理大数据量和高并发请求的复杂商务服务.通过提供独特的最优化特性,CUBRID可 ...

  3. HDU 5818 Joint Stacks(联合栈)

    HDU 5818 Joint Stacks(联合栈) Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Ja ...

  4. python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理

    python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...

  5. shiro连接数据库

    建一个jdbcRealm.ini [main] jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm dataSource=com.mchange.v2.c3 ...

  6. [转载] Tmux 速成教程:技巧和调整

    原文: http://blog.jobbole.com/87584/ 决定从 screen 转向 tmux 了, 非常喜欢 tmux 的窗格功能. 简介 有些开发者经常要使用终端控制台工作,导致最终打 ...

  7. 09 高效的PL/SQL程序设计

    程序包 Package 断开了依赖链 实验依赖关系: <1> 首先不使用包 -- 创建表 CREATE table t (x int); -- 创建视图 create view v as ...

  8. angularjs探秘<一>

    首先聊聊angularjs是啥. 首先AngularJS 是一个 JavaScript 框架.(PS:其实就是外部引用的js文件) 所以AngularJS的使用依然是外部引用js文件. 附上引用地址 ...

  9. (三)stm32之串口通信DMA传输完成中断

    一.DMA功能简介 首先唠叨一下DMA的基本概念,DMA的出现大大减轻了CPU的工作量.在硬件系统中,主要由CPU(内核).外设.内存(SRAM).总线等结构组成,数据经常要在内存和外设之间,外设和外 ...

  10. Android 热补丁动态修复框架小结

    一.概述 最新github上开源了很多热补丁动态修复框架,大致有: https://github.com/dodola/HotFix https://github.com/jasonross/Nuwa ...