Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value

  •      Map 中的 key 和  value 都可以是任何引用类型的数据
  •      Map 中的 key 用Set来存放,不允许重复,即同一个,常用String类作为Map的“键”
  •      key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到唯一的、确定的 value

1.HashMap

HashMap是线程不安全的

package com.gather;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry; public class HashMapPractise {
public static void main(String[] args) {
Map<String, Person> map = new HashMap<>();
Person p1 = new Person("张三", 22);
Person p2 = new Person("李四", 23);
Person p3 = new Person("王五", 22);
map.put("AA", p1);
map.put("BB", p2);
map.put("CC", p3); //第一种遍历方式:能同时取出键值对
for(String str:map.keySet()) {
System.out.println("键为:"+str+",值为:"+map.get(str));
}
System.out.println("------------------------------"); //第二种遍历方式:只取值或只取键
for(String str:map.keySet()) {
System.out.println("键为:"+str);
} for(Person person:map.values()) {
System.out.println("值为:"+person);
}
System.out.println("------------------------------"); //推荐:第三种遍历方式:能同时取出键值对
for(Entry<String,Person> entry:map.entrySet()) {
System.out.println("键为:"+entry.getKey()+",值为:"+entry.getValue());
}
System.out.println("------------------------------"); //第四种遍历方式:能同时取出键值对
Iterator<Entry<String, Person>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
Entry<String, Person> entry = entries.next();
System.out.println("键为:"+entry.getKey()+",值为:"+entry.getValue());
}
}
}

   2.Hashtable

Hashtable是线程安全的

package com.gather;

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Map;
import java.util.Map.Entry; public class HashtablePractise {
public static void main(String[] args) {
Map<String, Person> map = new Hashtable<>();
Person p1 = new Person("张三", 22);
Person p2 = new Person("李四", 23);
map.put("AA", p1);
map.put("BB", p2); for (Entry<String, Person> entry : map.entrySet()) {
System.out.println("键为:" + entry.getKey() + ",值为:" + entry.getValue());
}
System.out.println("------------------------------"); Hashtable<String, Person> hashtable = new Hashtable<>();
hashtable.put("AA", p1);
hashtable.put("BB", p2); // Hashtable的另外一种遍历方式:Enumeration
Enumeration<String> enuKey = hashtable.keys();
while (enuKey.hasMoreElements()) {
System.out.println(enuKey.nextElement());
} Enumeration<Person> enuValue = hashtable.elements();
while (enuValue.hasMoreElements()) {
System.out.println(enuValue.nextElement());
}
}
}

Java集合-----Map详解的更多相关文章

  1. java集合框架详解

    java集合框架详解 一.Collection和Collections直接的区别 Collection是在java.util包下面的接口,是集合框架层次的父接口.常用的继承该接口的有list和set. ...

  2. Java集合框架详解(全)

    一.Java集合框架概述 集合可以看作是一种容器,用来存储对象信息.所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下. 数组与集合的区别如下 ...

  3. Java—集合框架详解

    一.描述Java集合框架 集合,在Java语言中,将一系类的对象看成一个整体. 首先查看jdk中的Collection类的源码后会发现Collection是一个接口类,其继承了java迭代接口Iter ...

  4. JAVA集合类型详解

    一.前言 作为java面试的常客[集合类型]是永恒的话题:在开发中,主要了解具体的使用,没有太多的去关注具体的理论说明,掌握那几种常用的集合类型貌似也就够使用了:导致这一些集合类型的理论有可能经常的忘 ...

  5. Java集合-----Set详解

    Set是没有重复元素的集合,是无序的 1.HashSet HashSet它是线程不安全的       HashSet常用方法:   add(E element)  将指定的元素添加到此集合(如果尚未存 ...

  6. Java集合-----List详解

    List中的元素是有序排列的而且可重复 1.LinkedList LinkedList是非线程安全的,底层是基于双向链表实现的       LinkedList常用方法:     toArray()  ...

  7. Java集合—Map

    简介 Map用户保存具有映射关系的数据,因此Map集合里保存着两组数,一组值用户保存Map里的key,另一组值用户保存Map里的value,key和value都可以是任何引用类型的数据.Map的key ...

  8. Java集合中List,Set以及Map等集合体系详解

    转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全) 概述: List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口 Set下有H ...

  9. java集合(2)- java中HashMap详解

    java中HashMap详解 基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 H ...

随机推荐

  1. JQuery is()与hasClass()方法的对比

    is()和hasClass()方法都可以用以检查匹配的所有元素里是否含有指定类名,虽说hasClass(className)函数等价于is(“.className”) 但is()方法比hasClass ...

  2. 什么是cookie?cookie的使用(设置,读取,删除)

    1.什么是cookie?     页面用来保存信息            比如:自动登录,记住用户名     cookie的特性           同一个网站所有页面共用一套cookie       ...

  3. 跨域的问题(nginx解决才是王道)

    跨域分为两类:一时get跨域,而是post跨域.常见的是三种: 一种是jsonp, $.ajax({ url: "http://127.0.0.1/~chenjiebin/mycode/ph ...

  4. JavaWeb学习总结——文件上传和下载

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  5. Centos6.5+Redmine

    花了两天时间,基于centos6.5操作系统,搭建了redmine环境,在这里记录下过程中遇到的问题以及搭建流程. centos6.5; redmine2.5.0; Ruby1.9.3; step 1 ...

  6. sql server 复制、镜像常见故障处理

    sql server2008数据库复制实现数据同步常见问题 操作使用的一些技巧(事务复制类型): 1.如何修改一个已经发布的表的属性? 将发布所有订阅删除,(发布不用删除),就可以在发布属性的项目中取 ...

  7. dedecms自定义表单提交成功后提示信息修改和跳转链接修改

    我们在用dedecms自定义表单提交成功后提示信息一般是"Dedecms 提示信息",这个要怎么改成自己想要的文字呢?还有就是提示页停留时间,目前估计就2秒,太快了,要如何设置长点 ...

  8. staticmethod()静态方法和classmethod类方法都是装饰器

    1.staticmethod()静态方法 使用@staticmethod目的是为了增加可读性,不需要参数self(不强制要求传递参数) 的方法都可以加上@staticmethod增加可读性 静态方法无 ...

  9. padStart()方法,padEnd()方法

    https://blog.csdn.net/ixygj197875/article/details/79090578

  10. [QGLViewer]3D场景鼠标点击位置

    重载鼠标事件: void AxMapControl::mousePressEvent(QMouseEvent* e) { switch(currentTool) { case AX_DRAW_DIRE ...