遍历

Java HashMap,LinkedHashMap,TreeMap

笑着哭i 提交于 2020-01-26 01:05:08
Java 为 数据结构 中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。 Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。 LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢

HashMap,TreeMap,LinkedHashMap学习

被刻印的时光 ゝ 提交于 2020-01-26 01:04:07
Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。 Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。 LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关

Python编程:3、操作列表

可紊 提交于 2020-01-25 22:00:17
文章目录 1、遍历整个列表 1.1 在for 循环中执行更多的操作 1.2在for 循环结束后执行一些操作 2、避免缩进错误 3、创建数值列表 3.1使用函数range() 3.2使用range() 创建数字列表 3.3对数字列表执行简单的统计计算 3.4 列表解析 4、使用列表的一部分 4.1切片 4.2 遍历切片 4.3 复制列表 5.元组 5.1定义元组 5.2 遍历元组中的所有值 5.3 修改元组变量 6.设置代码格式 1、遍历整个列表 需要对列表中的每个元素都执行相同的操作时,可使用Python中的for 循环。例如,使用for 循环来打印魔术师名单中的所有名字: 代码第二行定义了一个for 循环让Python从列表magicians 中取出一个名字,并将其存储在变量magician 中。然后让Python打印存储到变量magician中的名字,这样,对于列表中的每个名字,Python都将重复执行2,3行代码。最后输出列表中所有的姓名。 1.1 在for 循环中执行更多的操作 在for 循环中,可对每个元素执行任何操作。在代码行for magician in magicians 后面,每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。在for 循环中,想包含多少行代码都可以。 1.2在for 循环结束后执行一些操作 for

Python语法糖——遍历列表时删除元素

核能气质少年 提交于 2020-01-25 10:50:34
Python的for可以遍历一个List,但是在遍历的过程中删除元素常常会得到意想不到的结果甚至程序出现异常,例如: lst = [1, 1, 0, 2, 0, 0, 8, 3, 0, 2, 5, 0, 2, 6] for item in lst: if item == 0: lst.remove(item) print lst 输出: [1, 1, 2, 8, 3, 2, 5, 0, 2, 6] 这段代码的本意是想删除列表中元素为 0 的项,但实际跑起来并不是那个结果。 再看下面这个例子,利用索引来遍历删除列表中的元素: for item in range(len(lst)): #此处可以每次循环时打印下item 然后就知道结果了 print(item) if lst[item] == 0: del lst[item] print lst 输出: IndexError: list index out of range 这时候就报错了,抛出了数组下标越界的异常。原因是用for发起任何形式的遍历时,它的遍历顺序都是从最初就确定的,而在遍历中删除了元素会导致当前索引的变化,这样一是会导致漏删元素,二是会导致遍历超过链表的长度。 所以遍历一个List时要删除其中的部分元素就需要其他的解决方案。 方法一:可以使用filter过滤返回新的List lst = [1, 1, 0, 2, 0,

Python3 读取word中的表格,根据表格第一行标题行查找想要的表格

你离开我真会死。 提交于 2020-01-25 09:31:35
## 安装 模块 pip install python-docx ## 使用 from docx import Document ## 读取 Word 文件里的表格信息 try: doc = Document('A:\\ABC.docx') except Exception as e: print("读取 Word 文件失败", e) else: print("读取 Word 文件成功") ## 读取文件中所有表格 doc.tables # 表格数 len(doc.tables) ## 第1个表格 doc.tables[0] ## 第1个表格的全部行 doc.tables[0].rows # 行数 len(doc.tables[0].rows) ## 第1个表格的 第1行 doc.tables[0].rows[0] ## 第1个表格 的 第1行 的全部 列 doc.tables[0].rows[0].cells # 列数 len(doc.tables[0].rows[0].cells) ## 第1个表格 的 第1行 的 第1列 doc.tables[0].rows[0].cells[0] doc.tables[0].rows[0].cells[0].text # 第1个表格 的 第1行 的 第1列 的单元格内容 ## 遍历全部单元格(下标方式) 表格数量 = len(doc

007Java集合框架+Collection接口API+Iterator迭代器接口+Set接口+List接口+Map接口+Collections工具类

允我心安 提交于 2020-01-25 08:04:47
一.Java集合框架 Java集合概述(java.util包下) 一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另 一方面,使用Array存储对象方面具有一些弊端,而Java集合就像一种容器,可以动态地把多个对象的引用放入容器中。 Java集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组。 数组存储对象的特点:Student[] stu = new Student[20];stu[0] = new Student();弊端,一旦创建,其长度不可变。真实的数组存放的对象的个数是不可知的。 Java集合可分为Collection和Map两种体系 Collection接口:Set,元素无序、不可重复的集合,HashSet、LinkedHashSet、TreeSet。List,元素有序,可重复的集合,ArrayList、LinkedList、Vector。 Map接口:具有影射关系“key-value对”的集合。HashMap、LinkedHashMap、TreeMap、Hashtable(子类-Properties)。 二.Collection接口API Collection接口方法 1.size():返回集合中元素的个数 2.add(Object obj):向集合中添加一个元素 3.addAll

PAT 【L2-011 玩转二叉树】

你说的曾经没有我的故事 提交于 2020-01-25 07:24:38
L2-011 玩转二叉树(25 分) 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。 输出格式: 在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。 输入样例: 7 1 2 3 4 5 6 7 4 1 3 2 6 5 7 输出样例: 4 6 1 7 5 3 2 题解:根据先序和中序遍历建立二叉树,在建立的时候讲原来的左子树变为现在右子树,原来的右子树变为现在的左子树,然后再层序遍历输出。 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <vector> #include <set> #include <map> #include <queue> using namespace std; typedef struct node{ int data; node *lchild,*rchild; }BiTNode,

PAT - L2-011. 玩转二叉树(分冶)

橙三吉。 提交于 2020-01-25 07:22:35
L2-011. 玩转二叉树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。 输出格式: 在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。 输入样例: 7 1 2 3 4 5 6 7 4 1 3 2 6 5 7 输出样例: 4 6 1 7 5 3 2 #include <iostream> #include <queue> using namespace std; /*************************************************************************************************************** 思路: 1,利用分冶创建二叉树(又花了一点时间理解 L1,R1,L2,R2) 2,利用 BFS 输出,因为题意是镜像,先将右孩子入队列,再将左孩子入队列即可 ***********

es6学习笔记 (数据结构set)

匆匆过客 提交于 2020-01-25 04:53:00
集合的概念:集合是由一组无序且唯一的项组成的。 特点 : key 和 value 相同,没有重复的值 es6 提供了数据结构 set , 他类似于数组,但是成员的值都是唯一的,没有重复的值。 1、如何创建一个 set (Set 本身是一个构造函数,用来生成 Set 数据结构。) var a = new Set([1,2,3]); console.log(a); // Set(3) {1, 2, 3} 用 Set 为数组去重 const set = new Set([1,2,3,4,2]); console.log(set); // Set(4) {1, 2, 3, 4} 2、Set 实例的属性和方法(size 、constructor) var a = new Set([1,2,3]); console.log(a.size); // 3 console.log(a.constructor); // function Set() { [native code] } Set 实例的方法 Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员) 1、add 方法 (添加某个值,返回Set结构本身) var a = new Set([1,2,3]); a.add("1").add(4); console.log(a); // Set(5) {1, 2, 3, "1

JS内置对象方法——array

拥有回忆 提交于 2020-01-25 01:50:56
  最近,感觉JS有些方法忘记了,这几天会抽空复习的,先从数组方法开始,然后是字符串方法,然后Math方法,在Data方法。   我尽可能的全面,但有些真的忘了,甚至忘得连一点印象也没了。   array方法:     ES6:         find:参数为回调函数,回调函数可以接收3个参数,值x,索引 i,数组arr,回调函数默认返回值x;         findIndex:和find差不多,不过默认返回索引;         includes:和String的includes一样,接收2参数,查询的项以及查询起始位置;         keys:对数组索引进行遍历;         values:对数组项进行遍历;         entries:对数组键值进行遍历;         fill:方法改变原数组,当第三个参数大于数组长度的时候,以最后一位为结束位置;         Array.of():永远返回一个数组,参数不分类型,只分数量,数量为0返回空数组;         copyWithin:接收三个参数,被替换数据的开始处,替换块的开始处,替换块的结束处;copyWithin(s,m,n);         Array.form():可以吧带有lenght属性类似数组的对象转换为数组,也可以吧字符串等可以遍历的对象转换为数组,它接收2个参数,转换对象与回调函数