遍历map

记录一次java foreach 的坑

大兔子大兔子 提交于 2019-12-12 07:35:57
在使用复杂的循环遍历任务时 foreach只执行一次就退出遍历了 我检查业务代码没有问题,只可能是什么原因导致中途默认执行完毕就退出了 发现这次在foreach里面对map使用了for循环遍历,改成foreach遍历就可以正常执行了. 所以以后foreach执行遍历.里面要添加遍历的画最好还是用foreach执行 来源: CSDN 作者: 曾冠超 链接: https://blog.csdn.net/zgc978823534/article/details/103497486

Java的Stream流式操作

独自空忆成欢 提交于 2019-12-10 20:58:39
前言 最近在实习,在公司看到前辈的一些代码,发现有很多值得我学习的地方,其中有一部分就是对集合使用Stream流式操作,觉得很优美且方便。所以学习一些Stream流,在这里记录一下。 Stream是什么 Stream 是Java 8中出现的新特性,极大增强了集合对象的功能,专注于对集合对象进行方便、高效的聚合操作。另外可以配合 Lambda 表达式,让代码更加容易理解。另外Stream提供串行和并行两种操作方式,并行操作可以很方便的写出高性能的并发程序。 Stream像是一个高级版本的Iterator,使用Iterator只能显式地遍历一个个元素对其执行某些操作;使用Stream,我们只需要指定对集合包含的元素执行什么操作,例如“只获取性别为男的用户”、“获取每个用户姓名的姓氏”等,Stream会帮我们完成隐式的遍历操作,并转换数据。 与Iterator不同的是,Iterator只能串行操作,每次操作完一个元素再去下一个元素。Stream支持串行、并行操作,Stream的并行操作依赖Java 7的Fork/Join框架(JSR166y)来拆分任务和加速处理过程。 Stream就像是一条流水线,单向,不可回头,只能遍历一次,之后就不能再使用了。 使用一个Stream流,一般分为三个步骤:1. 获取数据源-> 2. 中间操作(Intermediate)-> 3. 终端操作

归约

南楼画角 提交于 2019-12-10 14:19:14
使用 entrySet 遍历 Map 类集合 KV,而不是 keySet 方式进行遍历。 说明:keySet 其实是遍历了 2 次,一次是转为 Iterator 对象,另一次是从 hashMap 中取出 key 所对应 的 value。而 entrySet 只是遍历了一次就把 key 和 value 都放到了 entry 中,效率更高。如果是 JDK8, 使用 Map.forEach 方法。 Java 开发手册 14/44 正例:values()返回的是 V 值集合,是一个 list 集合对象;keySet()返回的是 K 值集合,是一个 Set 集合 对象;entrySet()返回的是 K-V 值组合集合。 来源: oschina 链接: https://my.oschina.net/u/2552286/blog/3140663

sync.Map(在并发环境中使用的map)

本小妞迷上赌 提交于 2019-12-09 18:51:36
sync.Map 有以下特性: 需要并发读写时,一般的做法是加锁,但这样性能并不高,Go语言在 1.9 版本中提供了一种效率较高的并发安全的 sync.Map,sync.Map 和 map 不同,不是以语言原生形态提供,而是在 sync 包下的特殊结构。 无须初始化,直接声明即可。 sync.Map 不能使用 map 的方式进行取值和设置等操作,而是使用 sync.Map 的方法进行调用,Store 表示存储,Load 表示获取,Delete 表示删除。 使用 Range 配合一个回调函数进行遍历操作,通过回调函数返回内部遍历出来的值,Range 参数中回调函数的返回值在需要继续迭代遍历时,返回 true,终止迭代遍历时,返回 false。 并发安全的 sync.Map 演示代码如下: package main ​ import ( "fmt" "sync" ) ​ func main() { ​ var scene sync.Map ​ // 将键值对保存到sync.Map scene.Store("greece", 97) scene.Store("london", 100) scene.Store("egypt", 200) ​ // 从sync.Map中根据键取值 fmt.Println(scene.Load("london")) ​ // 根据键删除对应的键值对

【Javascript】JS遍历数组的三种方法:map、forEach、filter

荒凉一梦 提交于 2019-12-09 13:02:27
前言    近一段时间,因为项目原因,会经常在前端对数组进行遍历、处理,JS自带的遍历方法有很多种,往往不加留意,就可能导致知识混乱的现象,并且其中还存在一些 坑 。前端时间在ediary中总结了js原生自带的常用的对数组遍历处理的方法,分别为:map、forEach、filter,在讲解知识点的同时,会类比相识的函数进行对比,这样会有助于思考方法的利与弊。 ****************************************************************************************** <1>、Js自带的 map() 方法 ***************************** ************************************************************* 1.方法概述   map()方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组 2.格式说明 var newArray = ["1","2","3"].map(function(e,i,arr){return parseInt(e,10)})   map中回调函数中的第一个参数为:当前正在遍历的元素   map中回调函数中的第一个参数为:当前元素索引   map中回调函数中的第一个参数为:原数组本身 3

【js】for、forEach、map数组遍历性能比较

一世执手 提交于 2019-12-09 05:58:18
【js】for、forEach、map数组遍历性能比较 先上结果:遍历时间上 for循环遍历 < for…of遍历 < forEach遍历 < for…in遍历 < map遍历 背景 常用的数组遍历方式有很多, 如最经典的for循环 for ( var i = 0 ; i < arr . length ; i ++ ) { } 再者有了for…in for ( var i in arr ) { } forEach arr . forEach ( function ( i ) { } ) ; map arr . map ( function ( i ) { } ) ; 然后ES6有了更为方便的for…of for ( let i of arr ) { } 此篇不考虑作用差异,仅对这些方式的性能做一次比较。 注:filter、every、some跟forEach/map相近,不常用所以本次不加入比较。 1.对比方案 本次采用最直观的方式进行对比:通过对高数量级数组的遍历时间进行比较。 1.1 数组arr: let arr = [ ] ; for ( let i = 0 ; i < 10000000 ; i ++ ) { arr [ i ] = i ; } console . log ( arr ) ; // [0, 1, 2, 3, ... , 9999999] 1.2 对比函数:

用foreach和Iterator遍历集合的方法

安稳与你 提交于 2019-12-09 05:50:07
package TestMap; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * Created by Administrator on 2017/5/5. */ public class Main { public static void main(String[] args) { Map<Integer,Penguin> map = new HashMap<Integer,Penguin>(); map.put( 101 , new Penguin( "欧欧" , "Q仔" )); map.put( 102 , new Penguin( "丫丫" , "Q妹" )); map.put( 103 , new Penguin( "美美" , "Q妹" )); map.put( 104 , new Penguin( "菲菲" , "Q妹" )); Set keys = map.keySet(); System. out .println( "foreach方法的遍历结果为:" ); for (Object key:keys) { Penguin value = (Penguin) map.get(key); System.

Gremlin基本使用

痞子三分冷 提交于 2019-12-08 05:06:23
Gremlin简介 Gremlin是 Apache TinkerPop 框架下的图遍历语言。Gremlin是一种函数式数据流语言,可以使得用户使用简洁的方式表述复杂的属性图(property graph)的遍历或查询。每个Gremlin遍历由一系列步骤(可能存在嵌套)组成,每一步都在数据流(data stream)上执行一个原子操作。 Gremlin包括三个基本的操作: map-step 对数据流中的对象进行转换; filter-step 对数据流中的对象就行过滤; sideEffect-step 对数据流进行计算统计; 以下是Gremlin在一些场景中的具体应用: 1.查找Gremlin朋友的朋友 g. V ().has( "name" , "gremlin" ). out( "knows" ). out( "knows" ). values( "name" ) 2.查找那些由两个朋友共同创建的项目 g.V().match( as ( "a" ). out ( "knows" ). as ( "b" ), as ( "a" ). out ( "created" ). as ( "c" ), as ( "b" ). out ( "created" ). as ( "c" ), as ( "c" ). in ( "created" ).count(). is ( 2 )).

Scala对于map不同的遍历方式

你离开我真会死。 提交于 2019-12-07 19:25:51
在java中遍历map需要拿到entry然后获取keyset然后通过get(key)的方式来遍历map; 由于本身在学习的时候java的思想深入人心导致在写Scala的时候不自觉的使用了这种遍历方式,但是这种方式会产生问题; 如下代码 val keys = map.keySet for (key <- keys){ //println(key) val strs = key.split("__") val name = strs(0) val namespace = strs(1) val value = map.get(key) val db_column_name = GetDBColumnName.getDBColumnName(name,namespace) //println(value.getClass) val data_type = DataType.getDataType(value) //println(name+"::"+namespace+"::"+data_type+"::"+db_column_name+"::"+event_type) currentProperties += Property(name,namespace,data_type,db_column_name,event_type) } 在这个方法中采用了java的遍历方式大师获取data

学习笔记|Set 和 Map 数据结构

走远了吗. 提交于 2019-12-06 10:25:32
1.Set 基本用法 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是 唯一 的,没有重复的值。 Set本身是一个构造函数,用来生成 Set 数据结构。 const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4 Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。 // 例一 const set = new Set([1, 2, 3, 4, 4]); [...set] // [1, 2, 3, 4] // 例二 const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]); items.size // 5 // 例三 const set = new Set(document.querySelectorAll('div')); set.size // 56 // 类似于 const set = new Set(); document .querySelectorAll('div') .forEach(div => set.add(div)); set.size // 56 上面代码也展示了一种去除数组重复成员的方法。