遍历

Java中HashMap遍历的两种方式

笑着哭i 提交于 2020-03-21 08:10:30
[转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml第一种:  Map map = new HashMap();  Iterator iter = map.entrySet().iterator();  while (iter.hasNext()) {  Map.Entry entry = (Map.Entry) iter.next();  Object key = entry.getKey();  Object val = entry.getValue();  }  效率高,以后一定要使用此种方式!第二种:  Map map = new HashMap();  Iterator iter = map.keySet().iterator();  while (iter.hasNext()) {  Object key = iter.next();  Object val = map.get(key);  }  效率低,以后尽量少使用! HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面请看实例:  public class HashMapTest {  public static void main(String

数组去重的方法有哪些?

℡╲_俬逩灬. 提交于 2020-03-21 06:33:42
1.遍历数组法 最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法"indexOf"是ECMAScript5方法,IE8以下不支持需多写一些兼容低版本浏览器代码,源码如下: // 最简单数组去重法 function unique1(array){ var n = [ ]; //一个新的临时数组 //遍历当前数组 for(var i = 0; i < array.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(array[i]) == 一1) n.push(array[i]); } return n; } // 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5)不支持 if (!Array.prototype.indexOf){ // 新增indexOf方法 Array.prototype.indexOf = function(item){ var result = 一1, a_item = null; if (this.length == 0){ return result; } for(var i = 0, len =

Java基础教程——Set

你。 提交于 2020-03-21 06:17:22
Set·无序,不重复 HashSet 特点:没有重复数据,数据不按存入的顺序输出。 HashSet由Hash表结构支持。不支持set的迭代顺序,不保证顺序。 但是Hash表结构查询速度很快。 创建集合使用代码: Set<String> s = new HashSet<>(); 代码演示:常用方法和遍历输出 import java.util.*; public class TestHashSet { public static void main(String[] args) { m010赋值And遍历(); } public static void m010赋值And遍历() { System.out.println("=====赋值And遍历"); Set<String> s = new HashSet<>(); s.add("孙悟空"); s.add("小白龙"); s.add("猪八戒"); s.add("沙悟净"); s.add("孙悟空"); System.out.println("是否为空:" + s.isEmpty()); System.out.println("是否包含:" + s.contains("小白龙")); System.out.println("移除:" + s.remove("小白龙")); // (1)foreach:遍历set for

第六章 字典

匆匆过客 提交于 2020-03-20 23:49:13
在本章中,我们将学习能够将相关信息关联起来的Python字典。我们将学习如何访问和修改字典中的信息。鉴于字典可存储的信息几乎是不受限制,因此我们会演示如何遍历字典中的数据。另外,我们还将学习存储字典的列表、存储列表的字典和存储字典的字典。 理解字典后,我们就能够更准确地为各种真是物体建模。我们可以创建一个表示人的字典,然后想在其中存储多少信息就存储多少信息:姓名、年龄、地址、职业以及要描述的任何方面。我们还能够存储任意两种相关的信息,如一系列单词及其含义,一系列人名及其喜欢的数字,以及一系列山脉及其海拔等。 6.1 一个简单的字典 来看一个游戏,其中包含一些外星人,这些外星人的颜色和点数各不相同。下面是一个简单的字典,存储了有关特性外星人的消息: alien.py]   alien_0 = {"color":"green","points":5}   print(alien_0["color"])   print(alien_0["points"]) 字典alien_0存储了外星人的颜色和点数。使用两条print语句来访问并打印这些信息,如下所示: green 5 与大多数编程概念一样,要熟练使用字典,也需要一段时间的练习。使用字典一段时间后,我们就会明白为何它们能够高效地模拟现实世界中的情形。 刚接触字典的时候也是很不习惯,其实字典主要包含键值对,键——值组成一个搭配

589. N叉树的前序遍历

别说谁变了你拦得住时间么 提交于 2020-03-20 03:07:12
给定一个 N 叉树,返回其节点值的 前序遍历 。 例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4] 。 说明: 递归法很简单,你可以使用迭代法完成此题吗? class Solution { public List<Integer> res = new ArrayList<>(); public List<Integer> preorder(Node root) { if(root == null) return res; res.add(root.val); for(Node node : root.children) { preorder(node); } return res; } } /* // Definition for a Node. class Node { public int val; public List<Node> children; public Node() {} public Node(int _val,List<Node> _children) { val = _val; children = _children; } }; */ class Solution { public List<Integer> preorder(Node root) { List<Integer> res = new ArrayList

ArrayList和LinkList的区别

∥☆過路亽.° 提交于 2020-03-19 13:25:30
题目描述 从上往下打印出二叉树的每个节点,同层节点从左到右打印。 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 解题思路 使用队列来进行 层次遍历 。 不需要使用两个队列分别存储当前层的节点和下一层的节点,因为在开始遍历一层的节点时,当前队列中的节点数就是当前层的节点数,只要控制遍历这么多节点数,就能保证这次遍历的都是当前层的节点。 ArrayList和LinkList的区别 底层实现区别 ArrayList 底层实现就是数组,且ArrayList实现了RandomAccess,表示它能快速随机访问存储的元素,通过下标 index 访问,只是我们需要用 get() 方法的形式, 数组支持随机访问, 查询速度快, 增删元素慢; LinkedList 底层实现是链表, LinkedList 没有实现 RandomAccess 接口,链表支持顺序访问, 查询速度慢, 增删元素快 ArrayList和LinkedList遍历的区别 List 实现RandomAccess使用的标记接口,用来表明支持快速(通常是固定时间)随机访问。这个接口的主要目的是允许一般的算法更改它们的行为,从而在随机或连续访问列表时提供更好的性能。 将操作随机访问列表(比如 ArrayList )的最好的算法应用到顺序访问列表(比如 LinkedList )时,会产生二次项行为

leetcode

走远了吗. 提交于 2020-03-18 21:46:09
LeetCode-14 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 "" 。 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。 思路: 这道题让我们求一系列字符串的共同前缀,没有什么特别的技巧,无脑查找即可,我们定义两个变量i和j,其中i是遍历搜索字符串中的字符,j是遍历字符串集中的每个字符串。这里将单词上下排好,则相当于一个各行长度有可能不相等的二维数组,我们遍历顺序和一般的横向逐行遍历不同,而是采用纵向逐列遍历,在遍历的过程中,如果某一行没有了,说明其为最短的单词,因为共同前缀的长度不能长于最短单词,所以此时返回已经找出的共同前缀。我们每次取出第一个字符串的某一个位置的单词,然后遍历其他所有字符串的对应位置看是否相等,如果有不满足的直接返回res,如果都相同,则将当前字符存入结果,继续检查下一个位置的字符. if(strs == null || strs.length == 0) return ""; //strs.length == 0不加报java.lang.ArrayIndexOutOfBoundsException

代码题(54)— 最长公共前缀

一曲冷凌霜 提交于 2020-03-18 21:45:50
1、14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 "" 。 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。   这道题让我们求一系列字符串的共同前缀,没有什么特别的技巧,无脑查找即可,我们定义两个变量i和j,其中i是遍历搜索字符串中的字符,j是遍历字符串集中的每个字符串。这里将单词上下排好,则相当于一个各行长度有可能不相等的二维数组,我们遍历顺序和一般的横向逐行遍历不同,而是采用纵向逐列遍历,在遍历的过程中,如果某一行没有了,说明其为最短的单词,因为共同前缀的长度不能长于最短单词,所以此时返回已经找出的共同前缀。我们每次取出第一个字符串的某一个位置的单词,然后遍历其他所有字符串的对应位置看是否相等,如果有不满足的直接返回res,如果都相同,则将当前字符存入结果,继续检查下一个位置的字符。 class Solution { public: string longestCommonPrefix(vector<string>& strs) { string res; if(strs.empty()) return res; for(int i=0;i<strs[0].size(

js数组去重的几种方法

孤人 提交于 2020-03-18 04:07:22
1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码,源码如下: // 最简单数组去重法 function unique1(array){ var n = [ ]; //一个新的临时数组 //遍历当前数组 for(var i = 0; i < array.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(array[i]) == 一1) n.push(array[i]); } return n; } // 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5)不支持 if (!Array.prototype.indexOf){ // 新增indexOf方法 Array.prototype.indexOf = function(item){ var result = 一1, a_item = null; if (this.length == 0){ return result; } for(var i = 0, len =

【算法日常】二叉树常用遍历方法

坚强是说给别人听的谎言 提交于 2020-03-17 14:56:13
二叉树的遍历 本篇算一个资料整理,就是二叉树遍历方法, 有先序遍历(PreOrder)、中序遍历(InOrder)、后序遍历(PostOrder)、广度优先遍历二叉树(breadth_first_search)、深度优先遍历(depth_first_search) 示例遍历二叉树: 二叉树节点格式: class TreeNode: def __init__(self, val): self.val = val self.left = self.right = None 1. 先序遍历 PreOrder 先遍历根节点,再遍历左子树,最后遍历右子树 def pre_order(root: TreeNode) -> list: if not root: return [] return [root.val] + pre_order(root.left) + pre_order(root.right) #### 遍历结果 ## [4, 2, 1, 3, 6, 5, 7] 2. 中序遍历 InOrder 先遍历左子树,再遍历根节点,最后遍历右子树, def in_order(root: TreeNode) -> list: if not root: return [] return in_order(root.left) + [root.val] + in_order(root.right)