Map集合以及Map集合的实现类Stream流的使用
Map
遍历Map集合
//方法一
//获得所有的键的Set集合
Set<Object> set = map.ketSet();
for(Object key : set){//根据具体的键获得具体的值Object value = map.get(key);
}
//方法二
//获得所有的键值对对象集合
Set<Map.Entry<Object, Object>> entrySet = map.entrySet();
for(Map.Entry<Object, Object>> entry : entrySet){entry.getKey();//获取该键值对对象的键entry.getValue();//获取该键值对对象的值
}
//方法三
map.forEach((key,value) -> {//其原理仍然是第二种遍历方式
});
HashMap
HashMap底层是hash表
- key.hashCode() =>确定索引
- key.equals(其它元素)
- 没有相等的,添加
- 如果有相等的,覆盖
TreeMap
TreeMap底层是红黑树
- 以key为依据判断节点在树中的位置
- key要么实现自然排序或TreeMap提供比较器
使用TreeMap必须要提供排序方式,当自然排序和比较器排序都提供了时,以比较器为准
HashMap和TreeMap插入和遍历顺序都不一致,如果想要一致可以选择LinkedHashMap
可变参数
public void 方法名(参数类型...变量名){}
可变参数要放在参数列表中最后一位
一个方法的参数类表中只能有一个可变参数
如果可变参数的方法与其他方法发生重载,那么其他方法的执行优先于可变参数的执行
不可变集合
不可变集合是JDK1.9才有的
List.of
Set.of
Map.of
//JDK1.9之前的操作方法
//不可变集合
List<Integer> list = Arrays.asList(1,2,3);
//把不可变集合的元素批量加入到可变集合中
ArrayList<Integer> list = new ArrayList<>(integers);
Stream
Stream流: - 生成流 - 执行中间操作(转换操作) - 执行终结操作
转换方法
- filter : 过滤, 接收一个Lambda表达式,参数代表集合的元素,返回值是布尔类型,true表示留下,false表示过滤掉
- map : 转换 接收一个Lambda表达式,参数列表是集合中的每一个元素,(x -> x * 2)按照规则,将元素转化成另一个元素
- skip : 跳过集合中前面几个元素
- limit : 可以获取到流中的前n个元素
- distinct : 去重,去除流中重复的元素
- concat : 合并,将两个流合并为一个流
- sorted() : 采用自然排序法
- sorted(比较器) : 采用比较器排序,((a, b)->比较规则 返回一个int})
终结方法
forEach(Consumer) : 可传入Lambda表达式, ( x -> 进行消费处理)
count :
//纯数字流在终结方法中多了一些跟数字有关的运算 System.out.println(IntStream.range(0, 10).sum());//获取从0-9的和 System.out.println(IntStream.range(0, 10).max().getAsInt());//获取从0-9中最大的数据 System.out.println(IntStream.range(0, 10).min().getAsInt());//获取从0-9中最小的数据 System.out.ptintln(IntStream.range(0, 10).average().getAsDouble());//获取从0-9之间的平均值
使用流修改数据后,不会影响原始数据
流一旦调用了终结方法,就不能调用其他方法了,否则会出现IllegalStateException(非法状态异常)
Map集合以及Map集合的实现类Stream流的使用相关推荐
- 24.1 传统集合的多步遍历代码、Stream流更优写法与stream、forEach、filter、count、limit、skip、concat方法、静态方法:tream.of()
目录 1 传统集合的多步遍历代码 2 Stream的更优写法 3 Stream流 3.1 Stream流:获取流 列:单列集合.双列集合.数组获取stream流 3.2 Stream流中的常用方法:f ...
- Map集合简单了解(水一章 明天Stream流)
Map Map集合的概述和使用 双列集合一次可以存两个元素 左边称为键,唯一的,右边称为值,可以重复的.对应的关系,称之为键值对 Interface Map<K,V&g ...
- Map集合、Stream流、File类、递归
一,JDK8新特性:Stream 1,认识Stream 也叫Stream流,是jdk8开始新增的一套API (java.util.stream.*),可以用于操作集合或者数组的数据. 优势: Stre ...
- Java SE基础知识详解第[13]期—不可变集合、Stream流、异常
写在前面: 每一个不曾起舞的日子,都是对生命的辜负. 希望看到这里的每一个人都能努力学习,不负韶华,成就更好的自己. 以下仅是个人学习过程中的一些想法与感悟,Java知识博大精深,作为初学者,个人能力 ...
- 黑马笔记---创建不可变集合与Stream流
目录 1.不可变集合 1.1什么是不可变集合? 1.2如何创建不可变集合? 总结: 2.Stream流 2.1Stream流的概述 什么是Stream流? 案例:Stream流的作用 Stream流式 ...
- JavaSE基础笔记——不可变集合简介、Stream流体系、异常处理
1.不可变集合简介 不可变集合,就是不可被修改的集合. 集合的数据项在创建的时候提供,并且在整个生命周期中都不可改变.否则报错. 为什么要创建不可变集合? 如果某个数据不能被修改,把它防御性地拷贝到不 ...
- 不可变集合 Stream流 异常
目录 创建不可变集合 如何创建不可变集合? Stream流 Stream流的概述 Stream流的获取 Stream流的常用API Stream流的综合应用 收集Stream流 异常处理 异常概述.体 ...
- java(九)-方法引用, Stream流,File类 , 递归 ,字节流
day09[方法引用.Lambda表达式.Stream流] 今日目标 线程状态 等待与唤醒 Lambda表达式 Stream流 教学目标 能够说出线程6个状态的名称 能够理解等待唤醒案例 能够掌握La ...
- 小汤学编程之JAVA基础day11——集合框架:List/Set/Map集合、Collections集合工具类、泛型、TreeMap和TreeSet
一.集合的特点 二.继承结构图 三.List集合 1.特点 2.ArrayList类 3.LinkedList类 4.两者的对比 5.集合的遍历 四.Set集合 1.特 ...
最新文章
- javaweb学习总结(三十四)——使用JDBC处理MySQL大数据
- P1582 倒水(二进制)
- 搞嵌入式Linux,做底层还是应用?底层要掌握哪些技能?
- 这个回答让我错失offer!offer拿到手软
- ruby 变量类中范围_Ruby中的类
- 代码实现tan graph model for classification_几行代码搞定ML模型,低代码机器学习Python库正式开源...
- ArcGIS API for Silverlight开发入门准备
- html5鼠标讯听,HTML5 随鼠标移动而变化的低频信号发生器
- 实验2-4-3 求平方根序列前N项和 (C语言)
- zbb20170607 svn SVN服务器搭建和使用
- 计算机组成原理第六版课后答案第五章答案,第五章 计算机组成原理习题答案6.doc...
- LoRa协议在Arduino上的应用——原理及代码分析(二)
- Sniffer和网络执法官软件助你维护网络
- vue3 composition API
- 基于VisMockup装配公差分析技术(VisVSA)的介绍
- python爬虫工资高吗_月薪2万的爬虫工程师,Python需要学到什么程度?
- java中feli删除操作_Feli的生日礼物
- 程序员月薪一万二在北京的真实生活!
- 中国红客联盟宣布解散:高层“内讧”,创始人和法人公开“互撕”!
- [NLP]Attention机制与self-Attention机制
热门文章
- 小白兔卖菜是计算机作文,白兔的菜作文
- Java树形菜单的构建、遍历以及获取树形菜单的Id集合List
- 为什么找不到AppData、Default、ProgramData文件
- 【MATLAB教程案例26】图像特征点提取算法matlab仿真与分析——sift,surf,kaze,corner,BRISK等
- php字符串加加运算,php 学习笔记
- 微信公众号身份证OCR识别和验真|人证比对
- mysql中select使用方法,MySQL中select语句介绍及使用示例
- 使用wangEditor富文本编辑器遇到的问题总结
- Jzoj5450【NOIP2017提高A组冲刺11.4】Neutral
- (1)WireShark