Java——集合(Map集合的两种迭代)

一,Map集合的第一种迭代

Map集合的第一种迭代,通过get(key)方法,根据键去获取值
package com.wsq.map;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class Demo2_Iterator {
/*** 通过查看Map集合的API发现没有Iterator方法,那么双列集合如何迭代呢?* Map集合的第一种迭代形式* 迭代==遍历* */public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();//双列集合,键是String类型,值是Integer类型map.put("张三", 23);map.put("李四", 24);map.put("王五", 25);map.put("赵六", 26);/*//根据键,去获取值  Integer wsq = map.get("张三");                //获取map双列集合中的键System.out.println(wsq);                    //打印输出map双列结合中的值*//** ①双列集合的第一种遍历形式,通过迭代器进行遍历//获取所有键Set<String> keySet = map.keySet();                  //map.keySet():获取所有的键的集合,键是String类型Iterator<String> it = keySet.iterator();            //获取迭代器 itwhile(it.hasNext()){                                //判断集合中是否有元素;iterator():如果迭代器具有多个元素,则返回 trueString key = it.next();                         //获取每一个键,键是String类型;next():返回迭代的下一个元素。Integer value = map.get(key);                   //根据键获取值,值是Integer类型;get(key):指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null System.out.println(key + "="  + value );        //打印键和值}*//*//②双列集合的第二种遍历形式,使用增强for循环遍历 for (String key : map.keySet()) {                   //for(临时变量,也就是想要获取的变量,这里是想要通过键去获取值,String key 表示的是每一个键:容器的名字,这里是 map.ketSet())   map.ketSet()是所有键的集合,拿到所有的键System.out.println(key + "=" + map.get(key));   //增强for循环迭代双列集合第一种方式}*/}}

二,Map集合的第二种迭代

Map集合的第二种迭代,根据键值对对象(也就是把键值对当成一个对象),获取键和值
也就是把双列集合的键值对,变成单列集合的键值对对象,然后遍历这个集合,获取每一个键值对对象,根据键值对对象获取键和值

解释一下Map.Entry

package com.wsq.map;public class Demo4_MapEntry {public static void main(String[] args) {}}interface Inter{interface Inter2{public void show();}
}class wsq implements Inter.Inter2{//这里的wsq类想继承Inter2,当出现Inter.Inter2,也就是说,Inter2是Inter的内部接口//同样的道理,Map.Entry,也就是说,Entry是Map里面的一个内部接口@Overridepublic void show() {          //实现接口要重写人家里面的抽象方法}}
package com.wsq.map;import java.security.KeyStore.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class Demo3_Iterator {/*** Map集合的第二种迭代,根据键值对对象,获取键和值*  A:键值对对象找键和值思路*      * 获取所以键值对对象的集合*      * 遍历键值对对象的集合,获取到每一个键值对对象*      * 根据键值对对象找键和值* */public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("张三", 23);map.put("李四", 24);map.put("王五", 25);map.put("赵六", 26);/*//①通过迭代器去遍历Set<Map.Entry<String, Integer>> entrySet = map.entrySet();      //Map.Entry说明Entry是Map的内部接口,将键和值封装成了Entry对象,并存储在Set集合中;遍历双列集合里面存储的都是Entry对象,所以通过迭代器迭代的应该也是Entry对象Iterator<Map.Entry<String, Integer>> it = entrySet.iterator();  //通过迭代器去获取每一个对象,<Map.Entry<String, Integer>>泛型的迭代应该一致while(it.hasNext()){                                            //hasNext():如果迭代器具有多个元素,则返回 true;通过循环开始获取每一个Entry对象Map.Entry<String, Integer> wsq = it.next();                 //①父类引用指向子类对象;这里的wsq就代表每一个Entry对象//Entry<String, Integer> wsq = it.next();                     //②直接获取的是子类对象String key = wsq.getKey();                                  //Set<Map.Entry<K,V>>下有个getKey():返回与此项对应的键;根据键值对对象获取对应的键Integer value = wsq.getValue();                             //Set<Map.Entry<K,V>>下有个getValue():返回与此项对应的值;根据键值对对象获取对应的值System.out.println(key + "=" + value);}*//*//②通过增强for循环遍历 for (Map.Entry<String, Integer> wsq : map.entrySet()) {         //for(定义一个临时变量的数据类型跟Entry对象的数据类型一致也就是Map.Entry<String, Integer> wsq代表每一个键值对象 :  )System.out.println(wsq.getKey() + "=" + wsq.getValue());    //通过键值对象来获取它里面的getKey()和getValue();getKey():返回与此项对应的键   getValue():返回与此项对应的值}*/}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用两个堆栈实现队列_使用两个队列实现堆栈

如何使用两个堆栈实现队列Stack and Queue at a glance... 堆叠和排队一目了然... Stack: 堆栈&#xff1a; The stack is an ordered list where insertion and deletion are done from the same end, top. The last element that entered first is the first one to be del…

接口pk抽象类

作为开发者&#xff0c;谁从来没有陷入过周而复始地争论应该是使用接口还是抽象类&#xff1f;这是一场永无休止的争论&#xff0c;不同阵营的人总是坚定地坚持自己的立场。应当使用接口还是抽象类&#xff1f;对于初学者来说那更是满头雾水。这个问题应该考虑一下几个因素&…

汇编shr命令

右移命令 比如&#xff1a; mov eax,10 shr eax,0x2上面的命令是将eax的值右移两位&#xff0c;怎么左移呢&#xff1f;首先将eax的值转为二进制10------》1010&#xff0c;然后右移两位变成10&#xff0c;所以执行为shr命令&#xff0c;eax的值为十进制的2

iBatis入门和开发环境搭建

iBatis 的优缺点&#xff1a; 优点&#xff1a; 1、 减少代码量&#xff0c;简单&#xff1b; 2、 性能增强&#xff1b; 3、 Sql 语句与程序代码分离&#xff1b; 4、 增强了移植性&#xff1b; 缺点&#xff1a; 1、 和Hibernate 相比&#xff0c;sql 需要自己写&#x…

Python | 程序以字符串长度打印单词

Given a string and we have to split the string into words and also print the length of the each word in Python. 给定一个字符串&#xff0c;我们必须将字符串拆分为单词&#xff0c;并在Python中打印每个单词的长度。 Example: 例&#xff1a; Input:str "Hell…

Java——递归练习

#练习一&#xff1a;从键盘接收一个文件夹路径&#xff0c;统计该文件夹大小 ###分析&#xff1a; ####每句话相当与每一个要求&#xff0c;每一个要求用一个方法去实现 第一个方法 * getDir()* 第一个要求&#xff1a;从键盘接收一个文件夹路径* 1&#xff0c;创建键盘录入对…

C# 里怎样得到当前执行的函数名,当前代码行,源代码文件名。

得到函数名&#xff1a; System.Diagnostics.StackTrace st new System.Diagnostics.StackTrace(); this.Text st.GetFrame(0).ToString(); 得到代码行&#xff0c;源代码文件名&#xff1a; StackTrace st new StackTrace(new StackFrame(true)); Console…

PHP中单引号和双引号的区别

0x01 单引号 单引号里面的内容不会被解释&#xff0c;不管什么内容&#xff0c;都当做字符串处理 <?php$abc1234; $stradc$abc; echo $str;输出 0x02 双引号 双引号里面的内容会被解释&#xff0c;像一些换行&#xff08;\n)、数据元素等都会被解释 <?php$abc1234;…

Eclipse 代码提示无效的解决方法

代码提示一般有两种形势1、点提示无效经常打一个点就能调出该对象可选的方法列表。哪天不灵了&#xff0c;可以这样解决&#xff1a;window->Preferences->Java->Editor->Content Assist->Advanced 上面的选项卡Select the proposal kinds contained in the de…

getdate 日期间隔_日期getDate()方法以及JavaScript中的示例

getdate 日期间隔JavaScript Date getDate()方法 (JavaScript Date getDate() method) getDate() method is a Dates class method and it is used to get the current day of the month. getDate()方法是Date的类方法&#xff0c;用于获取当月的当前日期。 It accepts nothin…

关闭页面时执行“退出”的解决方案

在有些应用中我们需要实时的更新站点用户是否在线的状态。比如一些论坛里的在线成员实时显示&#xff0c;或基于网页的聊天、会议系统等。这种情况下&#xff0c;如果用户点击“退出”按钮或链接&#xff0c;我们将之行一系列后台操作&#xff0c;将该用户标识成off line状态&a…

Java——多线程实现的三种方式

创建新执行线程有三种方法。 第一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。 例如&#xff0c;计算大于某一规定值的质数的线程可以写成&#xff1a; class PrimeThread extends Thread {long minPrime;Pri…

python网络编程---TCP客户端

0x01 环境 python2、 pycharm 0x02 程序 # -*- coding:UTF-8 -*- import sockettarget_hostwww.baidu.com tarfet_port80target_hostlocalhost target_port3345 dataABCDEF# 创建一个socket对象 client socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 连接客户端 clien…

c#枚举数字转枚举_C#枚举能力问题和解答 套装4

c#枚举数字转枚举1) What is the correct output of given code snippets in C#.NET? using System;class program{enum emp_salary : int{emp1 10000,emp2 15000,emp4 20000}static void Main(string[] args){int sal (int)emp_salary.emp2;Console.WriteLine(sal);}}100…

Java——匿名内部类实现线程的两种方式

package com.yy.thread;public class Demo4_Thread {public static void main(String[] args) {demo1(); //匿名内部类&#xff0c;第一种&#xff0c;继承Threaddemo2(); //匿名内部类&#xff0c;第二种&#xff0c;实现Runnable接口 }private static void…

zlib1.2.5的编译

zlib1.2.5没有了1.2.4的vc6工程&#xff0c;只好使用命令行编译。通过win32/Makefile.msc发现有4种编译方式&#xff0c;如下&#xff1a;# Usage:# nmake -f win32/Makefile.msc (standard build)# nmake -f win32/Makefile.msc LOC-DFOO …

python网络编程--UDP客户端

0x01 环境 python、pycharm 0x02 程序 # -*- coding:utf-8 -*-import sockettarget_host127.0.0.1 target_part80#创建一个socket对象 client socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#发送一些数据 client.sendto(AAAAAA,(target_host,target_part))#接收到的消息 …

window.open参数和技巧

【1、最基本的弹出窗口代码】 <SCRIPT LANGUAGE"javascript"> <!-- window.open (page.html) --> </SCRIPT> 因为着是一段javascripts代码&#xff0c;所以它们应该放在<SCRIPT LANGUAGE"javascript">标签和</script>之间。…

java jar包示例_Java包getImplementationTitle()方法和示例

java jar包示例包类的getImplementationTitle()方法 (Package Class getImplementationTitle() method) getImplementationTitle() method is available in java.lang package. getImplementationTitle()方法在java.lang包中可用。 getImplementationTitle() method is used to…

Java——获取和设置多线程的名称

给名字进行赋值有两种方式&#xff1a; 1&#xff0c;通过构造去赋值 Thread(String name) 直接在构造方法里面传一个名字就行了2&#xff0c;通过set设置的方法进行赋值 package com.yy.threadmethod;public class Demo1_Name {public static void main(String[] args) {dem…