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. java中使用jdbc配置连接串时mysql 5.6与5.7版本“编码”参数有区别!

    在mysql5.6中 java程序使用jdbc时链接字符串应该使用?characterEncoding=utf-8,而5.7版本可以省略,否则可能会有相关的语句执行结果出错! String drive ...

  2. python摸爬滚打之day03----基本数据类型(int,str,bool)

    1.数据类型转换 字符串 ----> bool print( bool("hello") )  -----> True 数字----> bool print( b ...

  3. 新兴的API(fileReader、geolocation、web计时、web worker)

    requestAnimationFrame() 每次浏览器重绘之前会调用这个方法!!! 它接收一个参数,就是回调函数: 它可以保证在最佳的间隔时间调用传入的回调函数,以达到让屏幕产生最流畅的动画效果. ...

  4. fork多线程进程时的坑(转)

    add : 在fork多线程的进程时,创建的子进程只包含一个线程,该线程是调用fork函数的那个线程的副本.在man fork中,有The child process is created with ...

  5. nginx 负载均衡5种配置方式

    nginx 负载均衡5种配置方式 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight和访问比率成正比, ...

  6. 并查集——合作网络D306

    合作网络D306             运行时间限制:1000ms: 运行空间限制:51200KB: 试题描述 有n个结点,初始时每个结点的父结点都不存在.你的任务是执行若干次Set操作和Query ...

  7. 前端 HTML body标签相关内容 常用标签 表格标签 table

    表格标签 table 表格由<table> 标签来定义.每个表格均有若干行(由 <tr> 标签定义),每行被分割为若干单元格(由<td>标签定义).字母 td 指表 ...

  8. 用laravel dingo/api创建简单的api

    1,修改.env配置文件添加 API_STANDARDS_TREE=vnd API_SUBTYPE=myapp API_PREFIX=api API_DOMAIN=null API_VERSION=v ...

  9. Dockerfile语法解析

    Dockfile介绍 从上到下依次执行 每次执行一条指令就创建一个镜像层 第一条指令必须是FROM    表示需要构建的镜像是由哪个镜像为基础镜像   后续的指令运行于此基准镜像所提供的运行环境 可以 ...

  10. LeetCode之有效括号

    class Solution:    def isValid(self,s):         #第一步,if 判断传入为空的情况        if s == "":      ...