Map :存储的是键值对,一对一对出现的,要保证键的唯一性.

Map常见的三个子类.
1.HashTable 底层是哈希表结构,不能存在null的情况.该集合是线程同步的.效率低
此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。

2.HashMap 底层是哈希表数据结构,允许null值和null键,该集合不同步. 效率高

3.TreeMap 底层是二叉树结构, 线程不同步,具备排序的特点.可以给Map集合中的键排序.
与Set很像,Set集合的底层就是使用了Map集合方法.

Map其共性方法有:

1.添加
  put()
  putAll()
2.删除
  clear();
  remove();
3.判断
  containsValue(Object value)
  containsKey(Object key)
  isEmpty();
4.获取
  get();
  size();
  values();

基本共性方法代码演示:

import java.util.*;
class MapDemo
{
public static void main(String [] args)
{
Map<String,String> map = new HashMap<String,String>(); //Hash无序的. //添加元素,添加了相同的键,后添加的值会将原先的键对应的值替换掉.put方法会返回原先被覆盖的值. sop("Put :"+map.put("01","zhangsan01"));
sop("Put :"+map.put("01","wangwu"));
map.put("02","zhangsan02");
map.put("03","zhangsan03"); //判断是否包含
sop("containsKey : zhangsan01 "+"------"+map.containsKey("01"));
//sop("remove : "+map.remove("03")); //找寻键,并打印出其对应的值: zhangsan03 //获取
sop("get : "+map.get("02")); map.put("04",null);
sop("get : "+map.get("04"));
//可以通过个get方法的返回值来判断一个 键 是否存在. 通过返回null来判断. //获取Map集合中的所有值
Collection<String> coll = map.values();
sop(coll); sop(map);
} public static void sop(Object obj)
{
System.out.println(obj);
} }

Map的重点方法:
  entrySet()
  KeySet()
这两种方法就是Map集合取出元素的方式:

Map集合两种取出方式:

1.Set<k> keySet
将Map中所有的键存入到Set集合.Set具备迭代器,可以用迭代取出所有的键.
在根据get方法,获取每个键所对应的值.

Map集合取出原理:转成Set集合.在通过迭代器取出.

2.Set<Map.Entry<k,v>> entrySet

将map集合中的 映射关系 存入到Set集合中,这个关系的数据类型是 : Map.Entry

其中Entry其实是一个内部接口.定义在map接口里面

格式如下:
interface Map
{
  public static interface Entry
  {
    public static void getValue();
    public static void getKey();
  }

}

class HashMap implements Map
{
  class Hash implements Map.Entry
  {
    public Object getValue(){};
    public Object getKey(){};
  }
}

两种取出方式的代码演练:

/*

Map集合两种取出方式:
1.Set<k> keySet
将map中所有的键存入到Set集合.Set具备迭代器,可以用迭代取出所有的键.
在根据get方法,获取每个键锁对应的值. Map集合取出原理:转成Set集合.在通过迭代器取出. 2.Set<Map.Entry<k,v>> entrySet ,将map集合中的 映射关系 存入到Set集合中,这个关系的数据类型是 : Map.Entry Entry其实是一个内部接口.定义在map接口里面
interface Map
{
public static interface Entry
{
public static void getValue();
public static void getKey();
} } class HashMap implements Map
{
class Hash implements Map.Entry
{
public Object getValue(){};
public Object getKey(){};
}
} */ import java.util.*;
class MapDemo2
{
public static void main(String [] args)
{
Map<String,String> map = new HashMap<String,String>(); map.put("01","zhangsan01");
map.put("02","zhangsan02");
map.put("03","zhangsan03");
map.put("04","zhangsan04"); //将map集合中的 映射关系 取出. Set<Map.Entry<String,String>> mapEntry = map.entrySet(); Iterator<Map.Entry<String,String>> it = mapEntry.iterator(); while(it.hasNext())
{
Map.Entry<String,String> me = it.next(); String key = me.getKey();
String value = me.getValue();
sop("Key :"+key+"Value :"+value);
} /* //获取Map集合的所有键,并放在Set集合中. 获取方法: keySet();
Set<String> keySet = map.keySet(); //迭代取出所有的键.
Iterator<String> it = keySet.iterator(); while(it.hasNext())
{
String key = it.next(); //有了键以后可以通过Map集合的get(key)方法获取其对应的值.
String value = map.get(key);
sop("Key :"+key+" Value :"+value);
} */ } public static void sop(Object obj)
{
System.out.println(obj);
} }

相关练习:

/*
练习: 每一个学生都有对应的归属地。
键值对: 学生Student为键,地址类型String值。
学生属性:姓名,年龄。
注意:姓名和年龄相同的视为同一个学生。
保证学生的唯一性。 1.描述学生。 2.定义map容器。将学生作为键,地址作为值。存入。 3.获取map集合中的元素。 */ import java.util.*; class MapTest
{
public static void main(String [] args)
{
Map<Student,String> map = new HashMap<Student,String>(); map.put(new Student("zhangsan01",21),"beijing");
map.put(new Student("zhangsan02",22),"shanghai");
map.put(new Student("zhangsan03",23),"guangzhou");
map.put(new Student("zhangsan04",24),"shenzhen"); //第一种取出方式:keySet
Set<Student> keySet = map.keySet(); Iterator<Student> it = keySet.iterator(); while(it.hasNext())
{
Student stu = it.next(); String addr = map.get(stu); sop("第一种取出方式 : student : "+stu.getName()+", age : "+stu.getAge()+", address : "+addr); }
sop("-----------------------------------------");
//第二种取出方式:entrySet Set<Map.Entry<Student,String>> entrySet = map.entrySet(); Iterator<Map.Entry<Student,String>> iter = entrySet.iterator(); while(iter.hasNext())
{
Map.Entry<Student,String> me = iter.next(); Student stu = me.getKey(); String addr = me.getValue(); sop("第二种取出方式 : student : "+stu.getName()+", age : "+stu.getAge()+", adresss :"+addr);
} } public static void sop(Object obj)
{
System.out.println(obj);
} } class Student implements Comparable<Student>
{
private String name;
private int age; Student(String name,int age)
{
this.name = name;
this.age = age;
} public int compareTo(Student s)
{
if(!(s instanceof Student))
throw new ClassCastException("类型匹配失败"); int num = new Integer(this.age).compareTo(new Integer(s.age));
if(num == 0)
{
return this.name.compareTo(s.name);
} return num;
} public int hashCode()
{
return name.hashCode()+age*17;
} public boolean equals(Object obj)
{
if(!(obj instanceof Student))
throw new ClassCastException("类型匹配失败"); Student stu = (Student)obj; return this.getName().equals(stu.getName()) && this.age==stu.age;
} public void setName(String name)
{
this.name = name;
} public void setAge(int age)
{
this.age = age;
} public String getName()
{
return name;
} public int getAge()
{
return age;
} }

Map笔记总结的更多相关文章

  1. Map笔记

    Map,是一个接口,是以键值对的方式存储的,并且键是无序且不可重复的.Map和Collection没有什么关系,Map是一对一对的存,而Collection是一个一个的存. 下面有一个子接口:Sort ...

  2. Java map笔记

    Map 是一个键值对的集合 花和尚 豹子头 鲁智深 林冲 如果想要从map中获得值,可以根据键 Map<Key,velue> Map虽然是集合,但是和collection的接口无关 我们可 ...

  3. Java基础 - Map接口的实现类 : HashedMap / LinkedHashMap /TreeMap 的构造/修改/遍历/ 集合视图方法/双向迭代输出

    Map笔记: import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要实现类) : HashedMap / LinkedHashMap /T ...

  4. ES6笔记(6)-- Set、Map结构和Iterator迭代器

    系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iter ...

  5. [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. Java学习笔记之:Java Map集合

    一.介绍 通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的. 二.笔记 /** * Map:接口. 不是collection的子类 key -value 键值对 key唯一不能重 ...

  8. STL笔记(1)map

    STL笔记(1)map STL之map ZZ from http://hi.baidu.com/liyanyang/blog/item/d5c87e1eb3ba06f41bd576cf.html 1. ...

  9. 【hadoop代码笔记】Mapreduce shuffle过程之Map输出过程

    一.概要描述 shuffle是MapReduce的一个核心过程,因此没有在前面的MapReduce作业提交的过程中描述,而是单独拿出来比较详细的描述. 根据官方的流程图示如下: 本篇文章中只是想尝试从 ...

随机推荐

  1. 武道释义 &#183; 零散

    若是你防御你的左边.你的右边必定是弱点: 若是你防御你的前面,你的后面必定是弱点. 若是你处处小心防御,则必定处处都是弱点." 有些武术尽管先声夺人.但却如喝渗水之酒,令人越瞧越觉无味: 但 ...

  2. 【HeadFirst 设计模式总结】1.策略模式

    1.书中举了一个鸭子类的设计,有些会飞或者会叫,有些不会飞可能也不会叫,用继承则导致不该有的功能通过继承而继承了下来,使用接口则代码无法做到最大程度的重用.进而引出设计原则1:找出应用中可能需要变化之 ...

  3. Android多媒体开发-- OpenMax IL简介

    1.openmax 简介 http://www.khronos.org/openmax/ OpenMax是一个多媒体应用程序的框架标准,由NVIDIA公司和Khronos在2006年推出. OpenM ...

  4. java学习之部分笔记2

    1.变量 实例变量和局部变量 实例变量系统会自动初始化为0和null(string),局部变量必须设定初始值. 静态方法里只能引用静态变量 数据类型的自动转换! int—>long 2.构造方法 ...

  5. 【27前端】在线css三角

    我们都知道利用css边框的属性可以画出三角形,这里为了方便,我做了一个简单的demo页面供大家使用. 在线css三角

  6. Java——单例设计模式

    设计模式:解决某一类问题最行之有效的方法.Java中23种设计模式:单例设计模式:解决一个类在内存中只存在一个对象. 想要保证对象唯一.1,为了避免其他程序过多建立该类对象.先禁止其他程序建立该类对象 ...

  7. 常用的SQL数据库语句总结

    1as 的用处 as可以对表和列取别名 在开发过程中经常遇到开始给某一个的字段去field1的名称,但后来有感觉field1字段指定不确切,于是又把此字段改成了field2,由于开始认 为field1 ...

  8. 关于javascript 数组的正态分布排序的一道面试题

    最近几天顶着上海40°的凉爽天气找工作,心里是开心的不要不要的,每次面试都是要坐那里出半天汗才能回过神来,感觉到了这个世界对我深深的爱意,言归正传,面试过程中碰到了几次笔试,其中有这么一道题,由于实际 ...

  9. mysql的分页存储过程,能够传出总记录数

    最近用mysql + asp.net来写网站,既然mysql已经支持存储过程了,那么像分页这么常用的东西,当然要用存储过程啦 不过在网上找了一些,发现都有一个特点——就是不能传出总记录数,干脆自己研究 ...

  10. Hadoop配置文件-mapred-site.xml

    name value Description hadoop.job.history.location   job历史文件保存路径,无可配置参数,也不用写在配置文件里,默认在logs的history文件 ...