iterator

Java学习入门-05 -集合浅析

萝らか妹 提交于 2020-03-08 18:06:09
集合数据结构体系框架 Collection接口是List/Set/Queue接口的父接口,其中定义的常用的操作方法有(注意此处笔记不完整,演示代码没有导包): 添加功能  i. boolean add(object obj)添加一个元素  ii. boolean addAll(Collection c)将集合c的全部元素添加到原集合元素后返回true  iii. 添加功能永远返回true 删除功能  i. void clear();移除所有元素  ii. boolean remove(Object o)移除一个元素  iii. boolean removeAll(Collection c)移除一个集合的元素,只要有一个被移除就返回true,改变原集合,删除原集合中和c中相同的元素  iv. 删除功能只有删除成功后才返回true 判断功能  i. boolean contain(object o)判断集合中是否包含指定的元素。  ii. boolean containsAll(Collection c)判断原集合中是否包含指定集合c的所有元素,有则true,  iii. boolean isEmpty()判断集合是否为空 获取功能  i. Iterator iterator()迭代器,集合的专用方式,实现遍历的功能  ii. Object next()获取当前元素,并移动到下一个位置

Python学习笔记07_函数式编程

孤人 提交于 2020-03-08 16:40:15
高阶函数Higher-order function 变量可以指向函数,即:函数本身也可以赋值给变量。 函数名也是变量。 把函数作为参数传入,这样的函数称为高阶函数。 map/reduce map()函数,接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。 <<< def f(x): return x * x <<< r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) <<< list(r) [1, 4, 9, 16, 25, 36, 49, 64, 81] # map()传入的第一个参数是f,即函数对象本身。 # 由于结果r是一个Iterator,Iterator是惰性序列, # 因此通过list()函数把整个序列计算出来并返回一个list. reduce()函数。 reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) # f是两个参数 reduce(f, [x1, x2, x3, x4]) = f(f(f(f(x1), x2), x3), x4) # f是一个参数 # str转换为int的函数 from functools import reduce def str2int(s): def fn(x, y):

更多的集合

浪尽此生 提交于 2020-03-08 11:56:28
Scala提供了一套很好的集合实现,提供了一些集合类型的抽象。这让你的代码可以与 Foo 的集合交互,而无需担心该集合是是一个 List ,还是 Set ,或是任何你有的类型。 这里 提供了一个很好的页面来查看各种集合的默认实现,并链接到他们的scala在线文档。 基础知识 你会随时用到的基本集合类型 层次结构 集合抽象层次 方法 方法 可变集合 可变 Java集合 与java集合交互 基础知识 表 List 标准的链表。 scala> List(1, 2, 3) res0: List[Int] = List(1, 2, 3) 你可以用函数式语言的方式连接它们。 scala> 1 :: 2 :: 3 :: Nil res1: List[Int] = List(1, 2, 3) 参考 API文档 集 Set 集没有重复 scala> Set(1, 1, 2) res2: scala.collection.immutable.Set[Int] = Set(1, 2) 参考 API文档 序列 Seq 序列有一个给定的顺序。 scala> Seq(1, 1, 2) res3: Seq[Int] = List(1, 1, 2) (请注意返回的是一个列表。因为 Seq 是一个特质;而列表是序列的很好实现。如你所见, Seq 也是一个工厂单例对象,可以用来创建列表。) 参考 API文档 映射

[集合]ListIterator源码解析(7)

微笑、不失礼 提交于 2020-03-08 06:54:13
迭代器可以让开发者遍历一个容器的元素,并且操作元素。 Java有两种原生的迭代器:Iterator和ListIterator, 其中 ListIterator继承自Iterator。 ListIterator比Iterator多了一些方法。例如逆序遍历,遍历时进行set元素到上次操作的元素的位置,add元素等操作。 ListIterator 在该类的说明中,JDK官方也进行了说明,迭代器的游标或者叫索引总是位于调用previous方法返回的元素和调用next方法返回的元素之间。 也就是说,游标不指向元素,而指向元素之间! public interface ListIterator < E > extends Iterator < E > { // Query Operations / 来源: CSDN 作者: 谙忆 链接: https://blog.csdn.net/qq_26525215/article/details/104621235

C++:lower_bound 和 upper_bound

天涯浪子 提交于 2020-03-07 20:56:02
C++:lower_bound 和 upper_bound 1. set , map, multiset, multimap 原型: iterator lower_bound ( const value_type & val ) const ; iterator upper_bound ( const value_type & val ) const ; pair < iterator , iterator > equal_range ( const value_type & val ) const ; lower_bound返回的是第一个 >= val 的迭代器 upper_bound返回的是第一个 > val 的迭代器 equal_range 返回的是lower_bound、upper_bound构成的上下限的迭代器区间 实例: struct Y { int y , id ; bool operator < ( Y tmp ) const // 方式1 { //注意const 第一个小于第二个 return y < tmp . y ; } } ; set < Y > s ; set < Y > :: iterator it ; it = s . upper_bound ( m ) ; //此处的查找是按照Y中的实例比较的 二分查找 2. 二分查找 头文件:algorithm -

Spark源码系列(二)RDD详解

十年热恋 提交于 2020-03-07 11:57:40
1、什么是RDD? 上一章讲了Spark提交作业的过程,这一章我们要讲RDD。简单的讲,RDD就是Spark的input,知道input是啥吧,就是输入的数据。 RDD的全名是Resilient Distributed Dataset,意思是容错的分布式数据集,每一个RDD都会有5个特征: 1、有一个分片列表。就是能被切分,和hadoop一样的,能够切分的数据才能并行计算。 2、有一个函数计算每一个分片,这里指的是下面会提到的compute函数。 3、对其他的RDD的依赖列表,依赖还具体分为宽依赖和窄依赖,但并不是所有的RDD都有依赖。 4、可选:key-value型的RDD是根据哈希来分区的,类似于mapreduce当中的Paritioner接口,控制key分到哪个reduce。 5、可选:每一个分片的优先计算位置(preferred locations),比如HDFS的block的所在位置应该是优先计算的位置。 对应着上面这几点,我们在RDD里面能找到这4个方法和1个属性,别着急,下面我们会慢慢展开说这5个东东。 //只计算一次 protected def getPartitions: Array[Partition] //对一个分片进行计算,得出一个可遍历的结果 def compute(split: Partition, context: TaskContext):

java基础进阶篇(七)_LinkedHashMap------【java源码栈】

别说谁变了你拦得住时间么 提交于 2020-03-06 10:31:21
目录 一.概述 二.特点 三.应用场合 四.构造方法 1.参数为空 2.accessOrder 五.源码结构分析 六.常见问题 1.如何实现的元素有序? 2.如何保证顺序的正确以及同步 3.如何实现两种顺序(插入顺序或者访问顺序)? 4.为什么重写containsValue()而不重写containsKey()? 七.常用方法 一.概述   LinkedHashMap是HashMap的子类,关于HashMap可以看下前面的章节: java基础进阶篇 HashMap public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> 二.特点 非线程安全 LinkedHashMap 内部保证顺序; 分插入顺序和访问排序两种, 如果是访问顺序,那put和get操作已存在的Entry时,都会把Entry移动到双向链表的表尾(其实是先删除再插入)。 HashMap不保证插入顺序. LinkedHashMap存取数据,还是跟HashMap一样使用的Entry[]的方式,双向链表只是为了保证顺序。 LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的。 LinkedHashMap的插入顺序和访问顺序可以由开发者自己决定. 三.应用场合   HashMap是无序的,当我们希望有顺序(

快速掌握ES6 iterator Generator和async 之间的关系及其用法

﹥>﹥吖頭↗ 提交于 2020-03-05 23:17:38
1.遍历器iterator 1.1 for遍历 首先从远古讲起,刚出js的时候如何遍历一个数组呢? var arr = [1, 2, 3, 4, 7, 8, 9] for (let i = 0;i < arr.length;i++) { console.log(arr[i]); } 1.2 forEach遍历 看起来笨的一批,所以ES5给你研究了一个foreach方法,但是这个方法不能break,也不能改变数组自身的值,也不能返回任何值。 var arr = [1, 2, 3, 4, 7, 8, 9] var arr2 = arr.forEach((element, index) => { console.log('第' + index + '个数值为:' + element); return element * 2; }); console.log(arr2) // undefined console.log(arr1) // [1, 2, 3, 4, 7, 8, 9] 所以说foreach只给你最基本的操作,其他一概不管,如果你想要改变自身的值或者有break和countinue操作我们可以使用map操作,不展开讲了,之前专门写了篇博客总结了下。 wzr: 数组遍历方法总结 1.3 for-in遍历 那么ES6专门为遍历数组提供了一种方法,就是for-of。说道for-of

notes on python

十年热恋 提交于 2020-03-05 23:12:53
iterator Behind the scenes, the for statement calls iter( ) on the container object. The function returns an iterator object that defines the method __next__() which accesses elements in the container one at a time. When there are no more elements, __next__() raises a StopIteration exception which tells the for loop to terminate.You can call the __next__() method using the next() built-in function 可以自己实现一个类的for loop: class A: class it: def __init__(s,a): s.a=a s.l=len(s.a.l)+len(s.a.l2) s.i=0 def __next__(s): if s.i==s.l: raise StopIteration a=0 if s.i<len(s.a.l): a= s.a.l[s.i] else: a= s.a.l2

Java Or android ConcurrentModificationException异常原因和解决方法

拜拜、爱过 提交于 2020-03-05 07:14:37
ArrayList<Integer> list = new ArrayList<Integer>(); list.add( 2 ); Iterator<Integer> iterator = list.iterator(); while (iterator.hasNext()){ Integer integer = iterator.next(); if (integer== 2 ) list.remove(integer); } 运行结果:    从异常信息可以发现,异常出现在checkForComodification()方法中。   我们不忙看checkForComodification()方法的具体实现,我们先根据程序的代码一步一步看ArrayList源码的实现:   首先看ArrayList的iterator()方法的具体实现,查看源码发现在ArrayList的源码中并没有iterator()这个方法,那么很显然这个方法应该是其父类或者实现的接口中的方法,我们在其父类AbstractList中找到了iterator()方法的具体实现,下面是其实现代码: 1 2 3 public Iterator<E> iterator() { return new Itr(); }   从这段代码可以看出返回的是一个指向Itr类型对象的引用,我们接着看Itr的具体实现