Map
双列集合(Map)
- 双列集合的体系
以键值对的形式存在的,如果需要存储成对存在的数据,那么就要使用双列集合---- Map 集合。
-------------| HashMap //底层也是依赖于哈希码去实现的,存储的位置是根据键的哈希码算出来的 -------------| TreeMap //底层也是使用了红黑树数据结构去实现的,特点:是会根据键的数据进行排序存储 -------------| Hashtable(了解)
- Map接口的方法:
增 put(K key, V value) 添加元素到map集合, 以前与 key 关联的值,如果没有针对 key 的映射关系,则返回 null。( putAll(Map<? extends K,? extends V> m) 删 clear() remove(Object key) 判断: containsKey(Object key) containsValue(Object value) isEmpty() 获取 get(Object key) size()
package cn.itcast.map; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class Demo1 { public static void main(String[] args) { Map<String,String> map = new HashMap<String, String>(); map.put("霆锋", "张柏芝"); map.put("文章", "马伊琍"); map.put("汪峰", "章子怡"); map.put("奥巴马", "凤姐"); /* Map<String,String> map2 = new HashMap<String, String>(); map2.put("习总", "彭丽媛"); map2.put("奥巴马", "凤姐"); 添加 System.out.println("返回值:"+ map.put("文章", "姚笛")); map.putAll(map2); //把map2的所有元素添加到map集合中。 删除 map.clear(); //清除map集合中所有 System.out.println("被删除的数据:"+ map.remove("奥巴马")); // 根据键删除一条数据, 返回是该键对应的值。 判断 System.out.println("判断是否存在指定的键:"+ map.containsKey("奥巴马")); System.out.println("判断是否存在指定的值:"+ map.containsValue("凤姐")); System.out.println("判断集合是否为空元素:"+ map.isEmpty()); 获取 System.out.println("根据值获取对应的值:"+ map.get("霆锋")); System.out.println("查看map集合的元素个数:"+ map.size()); */ System.out.println("集合的元素:"+map); } }
双列集合没有迭代器,所以只能使用单列集合的迭代器,可是单列集合的迭代器都是只能返回一条数据,而map的返回值是以键值对的形式存在的,故此我们要将返回值进行相应的修改,使得单列集合的迭代器能迭代输出双列集合的值
遍历方式一: 可以使用keySet方法遍历。 keySet方法返回的集合只是包含了所有的键,没有包含值。
public class Demo2 { public static void main(String[] args) { Map<String,String> map = new HashMap<String, String>(); map.put("霆锋", "张柏芝"); map.put("文章", "马伊琍"); map.put("汪峰", "章子怡"); map.put("奥巴马", "凤姐"); Set<String> set = map.keySet(); //把map集合中所有key的数据存储到Set集合中返回。 Iterator<String> it = set.iterator(); while(it.hasNext()){ String key = it.next(); System.out.println("键:"+ key+" 值:"+ map.get(key)); } }
遍历的方式二:可以使用values方法进行遍历。 values方法返回的集合对象只是包含了map中的所有值,没有键的数据。
Collection<String> list = map.values(); // values 把map集合中的所有值存储到一个Collection集合返回 Iterator<String> it= list.iterator(); while(it.hasNext()){ String value = it.next(); System.out.println("值:"+ value); }
遍历的方式三: 使用 entrySet方式遍历。 推荐使用。
Set<Map.Entry<String,String>> entrys = map.entrySet(); //Set<Entry<String,String>> entrys = map.entrySet(); Iterator<Map.Entry<String,String>> it = entrys.iterator(); //Iterator<Entry<String,String>> it = entrys.iterator(); while(it.hasNext()){ Map.Entry<String,String> entry = it.next(); //Entry<String,String> entry = it.next(); System.out.println("键: "+ entry.getKey()+ " 值:" + entry.getValue()); }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
持续集成、持续部署、持续交付、持续发布
概念 持续 (Continuous):不断的获取反馈,响应反馈。集成 (Integration):编译、测试、打包;部署 (Deployment):应用组件或基本设施的代码或配置变更在产品环境生效称为“部署”;发布 (Release):具有业务影响的功能变化对最终用户可见称为“发布”。交付 (Delivery):可以理解为从 Deployment 到 Release之间的阶段,更多的强调的是一种能力。开发有能力频繁的部署,业务有能力随时发布。 相关连接:知乎:如何理解持续集成、持续交付、持续部署?阮一峰:持续集成是什么?使用Jenkins进行持续集成coding.net:ci使用 Jenkins 构建 Coding 项目 达到的目标 名词说的那么多,扯的天花乱坠也没什么卵用,达到实际的效果才行。 我要达到的目的:开发人员提交代码到git,剩下的事情软件自动完成,打开浏览器可以直接看到程序界面 开始搭建持续集成环境 这里讲两种,1.Java语言,Springboot框架为主开发时Jenkins持续集成,2.Js或Ts语言,以angualr框架或nodejs等为主开发,Jenkins集成。...
- 下一篇
java并发编程笔记--volatile与synchronized关键字
合理使用并发 单线程程序并不一定比多线程程序性能差 1) 当任务较轻,执行任务的消耗没有开启多线程消耗多时;2) 当上下文切换带来的消耗较高时;3) 当多线程的同步处理代价过大时; 并发的优势 1) 提高系统的吞吐率:能够合理的利用IO等待时间等情况;2) 提高响应性:防止因为处理业务等待导致响应时间过长;3) 充分利用多核CPU资源:单线程程序对多核CPU使用效率不高;4) 最小化系统资源的使用:线程共享资源,避免了多进程造成的资源浪费;5) 简化程序结构:现实世界是并行的,多线程能够更容易的表达现实世界; 如何减少上下文切换? 1) 无锁并发编程:不同的线程尽可能减少共享数据的范围,或者不共享数据;对于共享数据,可以考虑将数据分片,操作时,不同的线程访问不同的分片,从而减小数据共享范围;2) CAS算法:使用CAS算法,通过乐观锁代替悲观锁,减少不必要的锁;3) 最少线程:线程并非越多越好,使用合适的线程数,避免产生大量的上下文切换;4) 协程:在单个线程中实现多任务调度,并在单个线程里维护多个任务间的切换; 如何避免死锁? 1) 避免一个线程同时获取多个锁;2) 避免一个线程在锁...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库