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. LeetCode 349 Intersection of Two Arrays 解题报告

    题目要求 Given two arrays, write a function to compute their intersection. 题目分析及思路 给定两个数组,要求得到它们之中共同拥有的元 ...

  2. Java如何编写Servlet程序

    一:Servlet Servlet是Java服务器端编程,不同于一般的Java应用程序,Servlet程序是运行在服务器上的,服务器有很多种,Tomcat只是其中一种. 例子: 在Eclipse中新建 ...

  3. java 线程 (一) Thread

    package cn.sasa.demo1; public class Test { public static void main(String[] args) throws Interrupted ...

  4. Python网络爬虫第三弹《爬取get请求的页面数据》

    一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...

  5. axios的特点有哪些?

    1.axios是一个基于promise的HTTP库,支持promise的所有API: 2.它可以拦截请求和响应: 3.它可以转换请求数据和响应数据,并对响应回来的内容自动转换为json类型的数据: 4 ...

  6. Android 出现 activity supporting action_view is not set as browsable报错

    <activity android:name=".ThirdActivity"> <intent-filter> <action android:na ...

  7. windows版本下ELK配置

    windows版本的es和kibana相对配置起来很简单,网上已经有很多例子都是正确的,只需按照步骤安装一下即可. 主要logstash,网上说的方案,大都不能配置成功,或者总有一些错误,下面把我自己 ...

  8. (1.11)SQL优化——mysql提示(hint)

    (1.11)mysql hint 关键词:mysql提示 1.SQL提示 (hint)是优化数据库的手段之一,使用它加入一些人为的提示来达到优化操作的目的: 举例: select sql_buffer ...

  9. SUDO安全委派和安全模块

    sudo更换身份 su  切换身份   使用su 切换身份必须首先直到被切换成用户的密码   如: su root  就必须要知道root的密码 这种机制安全性不高,容易泄露管理员密码 1. sudo ...

  10. (转)Geth控制台使用及Web3.js使用实战

    在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3.Geth 控制台(REPL)实现了所有的web3 API及Admin API,使用好 Geth 就是必修课.结合Geth命令用法阅 ...