修改练习1中的Gerbil类,将其放入Map中,将每个Gerbil的名字与每一个Gerbil关联起来。为keySet()获取Iterator,使它遍历Map,针对每个键查询Gerbil,然后打印出键。
这里,键:每个Gerbil的名字即“Gerbil+编号”,值:Gerbil类的对象。
package p421;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import p393.Gerbil;
public class UseMap {Map<String,Gerbil> myger=new HashMap<String,Gerbil>();Iterator<String> it;//Iterator<String>it =myger.keySet().iterator();这么写就会出现空指针异常UseMap(int num){for(int i=0;i<num;i++){myger.put("Gerbil"+i, new Gerbil(i));}it= myger.keySet().iterator();//获取某个List对象的iterator一定要在该List赋值之后。}public void out(){while(it.hasNext()){String s =it.next();//这里需要用另外一个String类来接收it.next(),个人猜想是因为每调用一次it.next(),则会向后移动一下System.out.println(s);myger.get(s).hop();}}static class Test{public static void main(String[] args) {UseMap um = new UseMap(5);um.out();}}
}
在thinking in java 的第十一章中,我多次使用Iterator出现空指针异常,原因就是用Iterator接收List.iterator()时,List还没有开始往里面塞东西,这样的话,得出的Iterator自然就不是我们想要的。这一点特别要注意。通常情况下,只需要把Iterator = List.Iterator()放在List已经完成赋值之后就行了。
因为it接收的是Map的keySet,即Map中键的Set列,所以system.out.println(it.next()),就能输出Map中的键,myger.get(it.next()).hop,就能调用对应键中的hop()方法,但是这里却需要用String s 来接收it.next(),再对s进行操作,这里的原因就是每调用一次it.next()迭代器就会后移一次,得出的结果自然不是我们想要的。并且最后一次会越界。
修改练习1中的Gerbil类,将其放入Map中,将每个Gerbil的名字与每一个Gerbil关联起来。为keySet()获取Iterator,使它遍历Map,针对每个键查询Gerbil,然后打印出键。相关推荐
- 包+类导入+静态导入+类放入包中+包作用域
[0]README 0.1)本文转自 core java volume 1, 旨在理清 包和类导入的相关知识: [1] 包 1.1) java 允许使用包将类组织起来,包可以方便组织代码,并将自己的代 ...
- java中将类放入包中,Java 包
Java 允许使用包(package)将类组织起来.借助于包可以方便地组织自己的代码,并将自己的代码与别人提供的代码库分开管理.使用包的主要原因是确保类名的唯一性.标准的 Java 类库分布在多个包中 ...
- 如何评估数据适不适合放入Redis中?
当项目中引入了 Redis 做分布式缓存,那么就会面临这样的问题: 哪些数据应该放到缓存中?依据是什么? 缓存数据是采用主动刷新还是过期自动失效? 如果采用过期自动失效,那么失效时间如何制定? 正好这 ...
- set是无序集合,放入set中的元素通过iterator输出时候是无序的
set是无序集合,放入set中的元素通过iterator输出时候是无序的 HashMap<String , String> hashMap = new HashMap<String ...
- mysql导出oracle_如何将mysql中的表结构导出放入oracle中
展开全部 将mysql中的表结构导出放入oracle中的方法: 1.导出mysql的表结构sql脚本,然后修改mysql中的数据类型为oracle中的数据类型: MySql与Oracle数据类型的62 ...
- Xilinx FPGA 将寄存器放入IOB中
xilinx FPGA的资源一般指IOB,CLB,BRAM,DCM,DSP五种资源.其中IOB就是input/output block,完成不同电气特性下对输入输出信号的的驱动和匹配要求. IOB的作 ...
- 练习---爬取薄荷网所有食物卡路里,并分类放入excel中
首先薄荷网里有11种大的食物分类,每种大的食物分类里有10页,每页10个食物及热量记录.本来想把这一共110个url都放入queue队列中,然后爬取,但是这样会打乱食物的分类,所以就只把每个食物大类的 ...
- MFC 如何将DWORD类型转换成CString放入ListBox中
问题来源描述:这个问题是我在用MFC写内存修改器的时候碰见的,我有一个DWORD[ ]类型,如何将它转成字符串放入ListBox中呢? 解决这一问题需要用到Format函数,这个函数是CString中 ...
- 【Qt】QStackedWidget:将多个窗口控件放入堆中,每次只显示一个窗口控件
1.简介 QStackedWidget可以容纳多个窗口控件,每次只显示其中一个.例如:登录页面.各种功能页面等不同时显示的窗口,可以放入QStackedWidget中. 2.demo // 创建三个页 ...
- OC--有这么一个 整数 123456789,如何将这个整数的每一位数,从末位开始依次放入数组中,并遍历 倒序输出字符串...
有这么一个 整数 123456789,如何将这个整数的每一位数,从末位开始依次放入数组中,并遍历 1 NSInteger num=123456789; 2 NSString *str=[[NSStri ...
最新文章
- MacOS系统下简单安装以及配置MongoDB数据库(一)
- 每日一皮:好像有个Bug... 你看到了吗?
- 【Groovy】Groovy 方法调用 ( 使用闭包创建接口对象 | 接口中有一个函数 | 接口中有多个函数 )
- 【Arduino】十秒挑战
- 《系统集成项目管理工程师》必背100个知识点-76配置审计
- 龙芯3A5000完成流片 同主频性能追平AMD Zen1
- 使用数据库的压测工具super-smack测试mysql数据库性能
- 单元格格式_单元格格式的用法你知道吗~~
- PHP中基本符号及使用方法
- Element menu
- 目标检测——YOLOV5的学习笔记(legcay)
- docker machine介绍和使用
- idea将项目打包(jar包/war包)
- MyEclipse7.0及JDK1.6.0的安装及配置过程(修改)
- 【SQL】SQL的基础语法
- 【IDEA类注释模板和方法注释模板】
- HP刀片服务器系统Flex,HP刀片服务器系统Flex-10 VC配置与VMware vSphere网络设计
- 未来,你会反感虚拟现实沉浸式广告吗?
- 3626 三元一次方程(枚举)
- 什么是基类,什么是派生类
热门文章
- 坚果JmGo J6S投影仪刷机指南及资源下载
- java浮点数数转二进制的数吗_都工作两年了,还不知道浮点数如何转二进制?...
- java layoutinflater_LayoutInflater介绍及例子
- 给朋友推荐一些歌,也算是简单的整理一下自己机器里的MP3
- mysql 中文转义字符_Mysql中的转义字符_MySQL
- 基于eclipse的android项目实战—博学谷(十一)习题界面
- W32.Beagle.AG@mm
- iOS设置静音模式播放声音以及注意点
- 计算机科学与技术创新实验班是什么意思,我院开办计算机科学与技术专业创新人才实验班...
- 万能程序员时代来临!