遍历map

java 遍历Map的4种方法

[亡魂溺海] 提交于 2020-02-24 06:52:48
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等) 方法一 在for-each循环中使用entries来遍历 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。 [java] view plain copy Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println( "Key = " + entry.getKey() + ", Value = " + entry.getValue()); } 注意:for-each循环在 Java 5中被引入所以该方法只能应用于 java 5或更高的版本中。如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用。 方法二 在for

【2月16日PAT刷题笔记】——1153 Decode Registration Card of PAT (25分)

人盡茶涼 提交于 2020-02-17 09:19:25
1153 Decode Registration Card of PAT (25分) 终于,经过一个多月的努力。。甲乙级的题都完成了百分之八九十左右了=_= 所以,这几天着重在处理自己过不了的题,大多是30分题,也有这样的25分题,好菜啊。。。。。。、 这就是一道排序题,但是我想复杂了,一直想的都是先预处理所有的可能 问题,然后问啥直接输出啥,但是这样不仅代码不好写,还很长,最后还是根据题解,改成了每次查询再遍历寻找。 1.当用map超时时,改用unordered_map有时可避免超时 2.c++ 的string类 也是可以用printf来进行输出的,像下面这样 #include<bits/stdc++.h> using namespace std; int main() { string s; cin>>s; printf("%s",s.c_str()); return 0; } 3.排序养成习惯:传参引用,这样比不传参更快 bool cmp(const node &a,const node &b) { if(a.score==b.score) return a.ID<b.ID; return a.score>b.score; } 本题的解 #include<bits/stdc++.h> using namespace std; const int maxn=1e4+100;

es6~Map数据结构

人走茶凉 提交于 2020-02-15 03:19:42
Map 含义和基本用法 JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。 const data = {}; const element = document.getElementById('myDiv'); data[element] = 'metadata'; data['[object HTMLDivElement]'] // "metadata" 上面代码原意是将一个 DOM 节点作为对象 data 的键,但是由于对象只接受字符串作为键名,所以 element 被自动转为字符串 [object HTMLDivElement] 。 为了解决这个问题,ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。 const m = new Map(); const o = {p: 'Hello World'}; m.set(o, 'content') m.get(o) // "content" m.has(o) //

javaSE学习笔记(11)--- Map

淺唱寂寞╮ 提交于 2020-02-12 23:48:49
javaSE学习笔记(11)--- Map 1、Map集合 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即 java.util.Map 接口。 我们通过查看 Map 接口描述,发现 Map 接口下的集合与 Collection 接口下的集合,它们存储数据的形式不同,如下图。 Collection 中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。 Map 中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。 Collection 中的集合称为单列集合, Map 中的集合称为双列集合。 需要注意的是, Map 中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。 Map常用子类 通过查看Map接口描述,看到Map有多个子类,这里我们主要讲解常用的HashMap集合、LinkedHashMap集合。 HashMap<K,V> :存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。 LinkedHashMap<K,V> :HashMap下有个子类LinkedHashMap

pat a 1112

耗尽温柔 提交于 2020-02-11 22:48:24
首先认为所有键都是好键 在遍历时把所用重复k次的挑出来利用unordered_map来记录(这里用的suspect),是坏键的记为1 用isnotbroken来记录一下谁一定是好键(例如至少一次重复次数少于n),以及我当初怀疑是坏键的其实某一次重复次数少于n,将是好键的记为1 处理完毕后是坏键的标志是suspect为1且isnotbroken为0 然后咱们再遍历一下,边遍历边把坏键放入一个set容器,边输出坏键 最后输出一下就好啦 # include <iostream> # include <unordered_map> # include <set> using namespace std ; unordered_map < char , int > suspect , isnotbroken ; int main ( ) { string str ; int n ; int lastcharnum = 1 ; cin >> n >> str ; int i = 1 ; while ( i < str . length ( ) ) { while ( str [ i - 1 ] == str [ i ] && i < str . length ( ) ) { lastcharnum ++ ; i ++ ; } if ( suspect [ str [ i - 1 ] ] ==

js原生的forEach()和map()以及jquery中的each()和map()他们4者的联系和区别

社会主义新天地 提交于 2020-02-11 06:53:14
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <script> $(function () { var arr=[1,3,5,7,9]; var obj={0:1,1:3,2:5,3:8,4:9,length:5}; // 利用原生的js的forEach()方法遍历 /* 第一个参数:当前遍历到的元素 第二个参数:当前遍历到的索引 原生的forEach一样不能遍历伪数组 */ arr.forEach(function(value,index){ console.log(index,value); }); // arr.forEach(function(value,index){ // console.log(index,value); // }) //

es6----set map应用场景

倾然丶 夕夏残阳落幕 提交于 2020-02-06 19:12:49
1.数组去重 2.字符串去重 属性: Set.prototype.size :返回 Set 实例的成员总数。 Set 实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。 add(value) :添加某个值,返回 Set 结构本身。 delete(value) :删除某个值,返回一个布尔值,表示删除是否成功。 has(value) :返回一个布尔值,表示该值是否为 Set 的成员。 clear() :清除所有成员,没有返回值。 遍历操作 Set 结构的实例有四个遍历方法,可以用于遍历成员。 keys() :返回键名的遍历器 values() :返回键值的遍历器 entries() :返回键值对的遍历器 forEach() :使用回调函数遍历每个成员 需要特别指出的是, Set 的遍历顺序就是插入顺序。这个特性有时非常有用,比如使用 Set 保存一个回调函数列表,调用时就能保证按照添加顺序调用。 (1) keys() , values() , entries() keys 方法、 values 方法、 entries 方法返回的都是遍历器对象 (2) forEach() Map 对象 Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。 Map方法 var myMap = new Map(); myMap.set(

Codeforces Round #617 (Div. 3) C. Yet Another Walking Robot

淺唱寂寞╮ 提交于 2020-02-06 00:30:24
http://codeforces.com/contest/1296/problem/C 题意:给一段字符串表示移动,然后求删除最短的一段,并且不影响结果 题解: 意思是:建立pair点和map,当遍历到第i个点有一个pair值,把这个加到map里面,如果向后接着遍历时出现与i点相同的pair值时,那么这一段表示可以删除的一段 #include <bits/stdc++.h> using namespace std; int main() { #ifdef _DEBUG freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); #endif int t; cin >> t; while (t--) { int n; string s; cin >> n >> s; int l = -1, r = n; map<pair<int, int>, int> vis; pair<int, int> cur = {0, 0}; vis[cur] = 0; for (int i = 0; i < n; ++i) { if (s[i] == 'L') --cur.first; if (s[i] == 'R') ++cur.first; if (s[i] == 'U') ++cur.second; if (s

Map集合相关

前提是你 提交于 2020-02-05 02:38:14
F:\IdeaProjects\baisc-codeII\day04-code Map集合概述 Map集合是一个双列集合,一个集合包含两个值,Key和Value; key不能重复,一个key对应一个value; 常用的有HashMap集合和LinkedHashMap集合。 HashMap<K,V>:存储数据采用的是哈希表结构,元素存取顺序不一致。 LinkedHashMap<K,V>:是HashMap的子类,存储数据采用的是哈希表+链表,链表保证了元素存取数据顺序一致。 二者都重写了hashCode()和equals()方法,来保证key的唯一性,区别是有序和无序,本篇所有示例均为HashMap集合。 常用方法 put(key,value):如果key不重复,返回值V是null;如果重复,会使用新的value替换重复的value,并返回旧value; remove(key):如果key存在,返回被删除的value,如果不存在,返回null; get(key):如果key存在,返回对应的值,不存在返回null; containsKey(key):包含返回true,不包含返回false; Map集合遍历 主要有两种遍历方式 方式1:通过键找值的方式 1.使用map集合中的方法keySet(),把Map集合中所有的key取出来,存储到一个set集合中 2.遍历set集合,获取每一个键 3

day13_Collection、泛型

旧时模样 提交于 2020-02-05 01:54:38
Collection集合 集合概述 在前面基础班我们已经学习过并使用过集合ArrayList ,那么集合到底是什么呢? 集合: 集合是java中提供的一种容器,可以用来存储多个数据。 集合和数组的区别 数组的长度是固定的。集合的长度是可变的。 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。 学习集合的目标 会使用集合存储数据 会遍历集合,把数据取出来 掌握每种集合的特性 学习集合的方式 学习顶层: 学习顶层的接口/抽象类共性的方法,所有的子类都可以使用 使用底层: 顶层不是抽象类就是接口,无法创建对象使用。我们要使用底层的实现类来创建对象使用。 集合框架 JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此合作,从而达到灵活应用。集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection 和双列集合 java.util.Map。Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List 和 java.util.Set 。其中, List 的特点是元素有序、元素可重复丶有索引可以使用普通for循环遍历。