Java集合-----Map详解
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详解的更多相关文章
- java集合框架详解
java集合框架详解 一.Collection和Collections直接的区别 Collection是在java.util包下面的接口,是集合框架层次的父接口.常用的继承该接口的有list和set. ...
- Java集合框架详解(全)
一.Java集合框架概述 集合可以看作是一种容器,用来存储对象信息.所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下. 数组与集合的区别如下 ...
- Java—集合框架详解
一.描述Java集合框架 集合,在Java语言中,将一系类的对象看成一个整体. 首先查看jdk中的Collection类的源码后会发现Collection是一个接口类,其继承了java迭代接口Iter ...
- JAVA集合类型详解
一.前言 作为java面试的常客[集合类型]是永恒的话题:在开发中,主要了解具体的使用,没有太多的去关注具体的理论说明,掌握那几种常用的集合类型貌似也就够使用了:导致这一些集合类型的理论有可能经常的忘 ...
- Java集合-----Set详解
Set是没有重复元素的集合,是无序的 1.HashSet HashSet它是线程不安全的 HashSet常用方法: add(E element) 将指定的元素添加到此集合(如果尚未存 ...
- Java集合-----List详解
List中的元素是有序排列的而且可重复 1.LinkedList LinkedList是非线程安全的,底层是基于双向链表实现的 LinkedList常用方法: toArray() ...
- Java集合—Map
简介 Map用户保存具有映射关系的数据,因此Map集合里保存着两组数,一组值用户保存Map里的key,另一组值用户保存Map里的value,key和value都可以是任何引用类型的数据.Map的key ...
- Java集合中List,Set以及Map等集合体系详解
转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全) 概述: List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口 Set下有H ...
- java集合(2)- java中HashMap详解
java中HashMap详解 基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 H ...
随机推荐
- docker基本原理
写的很不错的文章,作个存档 什么是容器 容器是 种轻量级.可移植的为应用程序提供了隔离的运行空间 .每个容器内都包含一个独享的完整用户环境,并且 个容器内的环境变动不会影响其他容器的运行环境,可以使应 ...
- 【BFS宽度优先搜索】
一.求所有顶点到s顶点的最小步数 //BFS宽度优先搜索 #include<iostream> using namespace std; #include<queue> # ...
- Koala ===》编译工具 ==》Less和Sass
官网下载网址:http://koala-app.com/index-zh.html 安装时:必须装在c盘,否则会编译报错,切记要装在c盘使用,把整体目录拖动到软件中,执行编译(success)即可 整 ...
- 死锁与递归锁 信号量 event 线程queue
1.死锁现象与递归锁 死锁:是指两个或两个以上的进程或线程在执行过程中,因争抢资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态或系统产生了死锁,这些永远在互相 ...
- git pull和push冲突
http://blog.csdn.net/matrix_laboratory/article/details/18034509 问题描述 1 有人改动了 文件A.java,提交到git 2 我没有pu ...
- 浪潮IOT知识点
1 新增身份定义 以及 身份定义的属性表 要注意增加路由 2 '@trident/core'; 飘红,解决办法 import { TableSearchComponent } from '@t ...
- Linux文本编辑器之vim
VIM 文本编辑器 vim/vi是Unix/Linux上最常用的文本编辑器而且功能强大.注意:只有命令,没有菜单 VIM工作模式 命令模式:又称为一般模式 编辑模式:又称为低行模式,命令行模式 插入命 ...
- [Java in NetBeans] Lesson 04. Class / Objects
这个课程的参考视频和图片来自youtube. 主要学到的知识点有: Class: Blueprint for an object. (e.g. dog is a class) Object: cust ...
- [Leetcode] Template to rotate matrix
Rotate the image by 90 degrees (clockwise). Given input matrix = [ [1,2,3,4], [5,6,7,8], [9,10,11,12 ...
- 引:Jmeter添加变量的四种方法
一.在样本中添加同请求一起发送的参数.根据服务器设置的数据类型,来添加不同类型的参数 二.用户定义的变量 1.创建:添加->配置元件->用户定义的变量 2.作用:当前的线程组内所有Samp ...