遍历

java中Map遍历的方法

让人想犯罪 __ 提交于 2020-03-14 04:20:34
1 public class testMap { 2 public static void main(String[] args) { 3 4 Map<String, String> map=new HashMap<String,String>(); 5 map.put("a", "aaaa"); 6 map.put("b", "bbbb"); 7 map.put("c", "cccc"); 8 map.put("d", "dddd"); 9 map.put("e", "eeee"); 10 11 // iterator 遍历 12 Set set=map.keySet(); 13 for(Iterator iter=set.iterator();iter.hasNext();){ 14 String key=(String) iter.next(); 15 String value=(String) map.get(key); 16 System.out.println(key+"===="+value); 17 } 18 19 20 // 增强for循环遍历 21 // 查找键(key) 22 for(Object key:map.keySet()){ 23 System.out.println("集合的键是"+"#########"+key); 24 } 25 // 查找值

python网络爬虫与信息提取——4.Beautiful Soup库入门

拟墨画扇 提交于 2020-03-13 19:50:55
1.Beautiful Soup库的安装 Win平台: “以管理员身份运行”cmd执行 pip install beautifulsoup4 from bs4 import BeautifulSoup 导入以缩写bs4为库名 2.soup = BeautifulSoup('需要解析的html代码', 'html.parser解析器') 3.beautifulsoup库的基本元素 BeautifulSoup对应一个HTML/XML文档的全部内容 (1)Beautiful Soup库解析器 bs4的HTML解析器 BeautifulSoup(mk,'html.parser') 安装bs4库 lxml的HTML解析器 BeautifulSoup(mk,'lxml') pip install lxml lxml的XML解析器 BeautifulSoup(mk,'xml') pip install lxml html5lib的解析器 BeautifulSoup(mk,'html5lib') pip install html5lib (2)BeautifulSoup类的基本元素 Tag 标签,最基本的信息组织单元,分别用<>和</>标明开头和结尾 Name 标签的名字,<p>…</p>的名字是'p',格式:<tag>.name Attributes 标签的属性,字典形式组织,格式:<tag>

JS-11 (数组函数)

白昼怎懂夜的黑 提交于 2020-03-13 14:41:38
(1)判断: ①判断数组中是否 所有元素 都符合要求 var bool=arr.every( function(elem,i,arr){ return 判断条件 } ) 返回值为true或false 原理 : 1). every 内部自带 for 循环 , 遍历数组中每个元素 2). 每遍历一个元素 , 就自动调用一次回调函数 3). 每次调用回调函数时 :   i. 形参 elem , 会自动获得当前正在遍历的 元素值   ii. 形参 i, 会自动获得当前正在遍历到的 下标 位置   iii. 形参 arr ,会自动获得当前调用 every() 时 . 前的数组对象 arr    ②判断数组中是否包含符合要求的元素 var bool=arr.some(function(elem,i,arr){ return 判断条件 }) 每次循环调用一次回调函数,如果当前元素满足条件,则数组后续的元素不再遍历 (2)遍历: ① forEach arr.forEach(//自带了for循环,遍历数组中每个元素   function(elem,i,arr){ //每遍历一个元素就自动调用一次回调函数     //elem收到当前正在遍历的元素值     //i收到当前正在遍历到的下标位置     //arr收到调用forEach()的.前的数组     /

大话高可用

自作多情 提交于 2020-03-13 12:07:59
  今天老大跟我讨论说,没有看到过一篇够全面体系的高可用的文章。谈到高可用,基本都是以偏概全的文章。今晚抽空想了一下这个问题。   高可用我另一个更资深老大其实总结的很全面了:别人死我们不死,自己不作死,不被队友搞死。   然后就是怎么别人死我们不死:最好就是别人的东西和我们没关系,就是去依赖。如果实在有依赖呢,那就尽量弱依赖。弱依赖有需要被依赖方的返回结果和不依赖返回结果两种。需要结果就要请求后回调,不需要就直接异步化。另外要做好超时和重试、蓄洪、限流、熔断、降级。如果只能强依赖呢,人家死了,那就我们报错,但是我们不死。这也需要设置合理超时和重试、蓄洪、限流、熔断、降级。人家又复活了,我们也要立即恢复。   基于对依赖的策略总结如下:   依赖策略里涉及到容灾的问题。容灾需要解决两个方面的问题:   这里就怎样快速失败和安全失败举一个例子。java.util包的容器的迭代器,在每次迭代的时候,其内部实现都会去判断modCount变量是否为expectedModCount的值。是的话就继续遍历,否则就抛出异常,终止遍历。这是一个快速失败的典型例子。   而采用安全失败机制的集合容器,在遍历时不时直接在集合内容上访问的,而是先复制原有集合内容,然后在拷贝的集合上进行遍历。所以再遍历过程中对元集合所作的修改并不能被迭代器检测到,不会触发异常。但是这时遍历对原集合的修改是不感知的。  

软考笔记第六天之数据结构与算法基础(一)

邮差的信 提交于 2020-03-13 07:43:05
数组 数组类型 存储地址计算 一维数组a[n] a[i]的存储地址是:a+i*len 二维数组a[n][m] a[i][j]的存储地址是: 按行存储:a+(i*m+j)*len 按列存储:a+(j*n+i)*len 例:已知5行5列的二维数组a中的各元素占2个字节,求元素a[2][3]按行优先存储的存储地址? a+(2*5+3)*2=a+26 稀疏矩阵 数据结构: 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往和高效的检索算法和索引技术有关。 数据逻辑结构: 线性结构,非线性结构(树,图[有环路]) 树: 二叉树遍历 前序遍历(根,左,右) 中序遍历(左,根,右) 后序遍历(左,右,根) 层次遍历(第一层,第二层...) 前序遍历:1,2,4,5,7,8,3,6 中序遍历:4,2,7,8,5,1,3,6 后序遍历:4,8,7,5,2,6,3,1 层次遍历:1,2,3,4,5,6,7,8 反向构造二叉树(已知两种序列,画出二叉树) 普通树转二叉树(孩子结点-左子树结点,兄弟结点-右孩子结点) 查找二叉树 二叉排序树(左孩子小于根,右孩子大于根) 最优二叉树(哈夫曼树) 构造最短的带权路径的树 线索二叉树: 使遍历更加快捷 绿线指向前驱结点,红线指向后驱结点

JavaScript -异步遍历-Promise.all()

给你一囗甜甜゛ 提交于 2020-03-12 05:40:45
记录比较低级但是却踩了的坑 原因是 forEach 是 同步遍历 ,最后用 Promis.all() 解决了 异步遍历 的情况。 Promise.all()介绍 Promise.all(iterable) 此方法在集合多个 promise 的返回结果时很有用 方法返回一个 Promise 实例,此实例在 iterable 参数内所有的 promise 都“完成(resolved)”或参数中不包含 promise 时回调完成(resolve); 如果参数中 promise 有一个失败(rejected),此实例回调失败(reject),失败原因的是第一个失败 promise 的结果。 抄自 MDN Promise.all() 使用 首先有一个异步的函数: function sleep ( ) { return new Promise ( ( resolve , reject ) => { setTimeout ( ( ) => { resolve ( ) } , 1000 ) } ) } 情境一:直接在循环里调用异步函数 async function withoutPromiseAll ( ) { [ 1 , 2 , 3 , 4 , 5 ] . forEach ( async ( item ) => { await sleep ( 1 ) console . log ( item )

15.迭代器模式

依然范特西╮ 提交于 2020-03-12 04:17:03
迭代器模式 一、迭代器模式 1.基本介绍 1)如果我们集合元素是用不同的方式实现的,有数组,还有java的集合类等,当客户端要遍历这些集合元素时就要使用多种遍历方式,还会暴露元素的内部结构,可以考虑使用迭代器模式解决。 2)提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示。 2.原理类图 1)Iterator:迭代器接口,是系统提供,含义hasNext,next,remove 2)Concretelterator:具体的迭代器类,管理迭代 3)Aggregate:一个统一的聚合接口,将客户端和具体聚合解耦 4)ConcreteAggreage:具体的聚合持有对象集合,并提供一个方法,返回一个迭代器,该迭代器可以正确遍历集合 5)Client:客户端,通过Iterator和Aggregate 依赖子类 二、迭代器模式应用实例 ​ 编写程序展示一个学校院系结构:要在一个页面中展示出学校的院系组成,一个学校有多个学院一个学院有多个系。 1.代码实现 public class Client { public static void main(String[] args) { //创建学院 List<College> collegeList = new ArrayList<College>(); ComputerCollege

LeetCode-589. N叉树的前序遍历

↘锁芯ラ 提交于 2020-03-12 04:15:41
给定一个N叉树,返回其节点值的 前序遍历 。 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4] 。 说明: 递归法很简单,你可以使用迭代法完成此题吗? 1 /* 2 // Definition for a Node. 3 class Node { 4 public: 5 int val; 6 vector<Node*> children; 7 8 Node() {} 9 10 Node(int _val, vector<Node*> _children) { 11 val = _val; 12 children = _children; 13 } 14 }; 15 */ 方法一:栈 1 class Solution { 2 public: 3 vector<int> preorder(Node* root) { 4 vector< int > ans ; 5 stack <Node *> slist ; 6 if( root == NULL ) 7 return ans ; 8 slist.push( root ) ; 9 while( slist.size() ){ 10 Node *top = slist.top() ; 11 slist.pop(); 12 ans.push_back( top->val ) ; 13 for( int i=top-

scala入门-09 scala高阶函数

為{幸葍}努か 提交于 2020-03-12 01:52:21
我们做spark开发 会使用很多spark的高阶函数 所以 今天我就在linux服务上使用scala高阶函数 声明一个List集合: List集合所在的包已经被预定义自动引入,所以此处就不需要在引入包了,这里直接使用List实例化对象,其实用List的object对象的apply方法 我们使用map函数把list中的每个值都乘以3: x表示l中每一个元素,map对l中的每一个元素进行遍历操作,由于List中只有一种类型的元素,所以我们在执行马屁操作的时候可以省略其类型,如下所示: List集合中只有一个参数的时候,我们可以去掉参数中的括号: 为了能保存所有代码,我还是使用IDEA吧 scala中的集合: 集合主要有List、Set、Tuple、Map等 在scala下的org.scala.collection下创建scala类CollectionOperations 在IDEA中创建一个List实例: 我们看一下List代码实现: 源码中说明了其内部是apply的方式来完成实例化的: 使用同样的方式实例化Set: 我们可也看下Set实例化对象的实现: 接下来我们在linux命令行终端中砍下集合的操作,首先看Set: 发现Set中不会存储重复的元素 下面看下Tuple的申明和使用: tuple 访问的时候下标是从1开始的 对于Tuple而言

Vue和React中的diff算法核心

早过忘川 提交于 2020-03-11 12:45:33
虚拟DOM js对象替代真实DOM, 更改避免回流(重新渲染),一次性通过render函数渲染成真实DOM 声明的样子 输出的样子 实现render函数生成真实DOM 设置属性 render函数 渲染函数 diff算法 diff算法其实就是对DOM进行different比较不同的一种算法(虚拟的比较更节约性能) __ 补丁:用来更新DOM的任务__ 比较原则 平级对比 不跨级对比(无A__删除__A) 同级复用 遍历规则 先序深度优先遍历(从根节点向下级子节点遍历) 125叫广度优先 12345深度优先 实现diff函数 比较思路规则 type相同,比较属性,属性不同生成补丁包patch {type:'ATTRS',attrs:{class:'xx'} } 新节点在原DOM中不存在 {type:'REMOVE',index:xxx} 节点类型不同,直接替换 {type:'REPLACE',newNode:xxx} 文本变化 {type:'TEXT',text:'xxx'} 来源: https://www.cnblogs.com/qidaoxueyuan/p/12461581.html