这里,键:每个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,然后打印出键。相关推荐

  1. 包+类导入+静态导入+类放入包中+包作用域

    [0]README 0.1)本文转自 core java volume 1, 旨在理清 包和类导入的相关知识: [1] 包 1.1) java 允许使用包将类组织起来,包可以方便组织代码,并将自己的代 ...

  2. java中将类放入包中,Java 包

    Java 允许使用包(package)将类组织起来.借助于包可以方便地组织自己的代码,并将自己的代码与别人提供的代码库分开管理.使用包的主要原因是确保类名的唯一性.标准的 Java 类库分布在多个包中 ...

  3. 如何评估数据适不适合放入Redis中?

    当项目中引入了 Redis 做分布式缓存,那么就会面临这样的问题: 哪些数据应该放到缓存中?依据是什么? 缓存数据是采用主动刷新还是过期自动失效? 如果采用过期自动失效,那么失效时间如何制定? 正好这 ...

  4. set是无序集合,放入set中的元素通过iterator输出时候是无序的

    set是无序集合,放入set中的元素通过iterator输出时候是无序的 HashMap<String , String> hashMap = new HashMap<String ...

  5. mysql导出oracle_如何将mysql中的表结构导出放入oracle中

    展开全部 将mysql中的表结构导出放入oracle中的方法: 1.导出mysql的表结构sql脚本,然后修改mysql中的数据类型为oracle中的数据类型: MySql与Oracle数据类型的62 ...

  6. Xilinx FPGA 将寄存器放入IOB中

    xilinx FPGA的资源一般指IOB,CLB,BRAM,DCM,DSP五种资源.其中IOB就是input/output block,完成不同电气特性下对输入输出信号的的驱动和匹配要求. IOB的作 ...

  7. 练习---爬取薄荷网所有食物卡路里,并分类放入excel中

    首先薄荷网里有11种大的食物分类,每种大的食物分类里有10页,每页10个食物及热量记录.本来想把这一共110个url都放入queue队列中,然后爬取,但是这样会打乱食物的分类,所以就只把每个食物大类的 ...

  8. MFC 如何将DWORD类型转换成CString放入ListBox中

    问题来源描述:这个问题是我在用MFC写内存修改器的时候碰见的,我有一个DWORD[ ]类型,如何将它转成字符串放入ListBox中呢? 解决这一问题需要用到Format函数,这个函数是CString中 ...

  9. 【Qt】QStackedWidget:将多个窗口控件放入堆中,每次只显示一个窗口控件

    1.简介 QStackedWidget可以容纳多个窗口控件,每次只显示其中一个.例如:登录页面.各种功能页面等不同时显示的窗口,可以放入QStackedWidget中. 2.demo // 创建三个页 ...

  10. OC--有这么一个 整数 123456789,如何将这个整数的每一位数,从末位开始依次放入数组中,并遍历 倒序输出字符串...

    有这么一个 整数 123456789,如何将这个整数的每一位数,从末位开始依次放入数组中,并遍历 1 NSInteger num=123456789; 2 NSString *str=[[NSStri ...

最新文章

  1. MacOS系统下简单安装以及配置MongoDB数据库(一)
  2. 每日一皮:好像有个Bug... 你看到了吗?
  3. 【Groovy】Groovy 方法调用 ( 使用闭包创建接口对象 | 接口中有一个函数 | 接口中有多个函数 )
  4. 【Arduino】十秒挑战
  5. 《系统集成项目管理工程师》必背100个知识点-76配置审计
  6. 龙芯3A5000完成流片 同主频性能追平AMD Zen1
  7. 使用数据库的压测工具super-smack测试mysql数据库性能
  8. 单元格格式_单元格格式的用法你知道吗~~
  9. PHP中基本符号及使用方法
  10. Element menu
  11. 目标检测——YOLOV5的学习笔记(legcay)
  12. docker machine介绍和使用
  13. idea将项目打包(jar包/war包)
  14. MyEclipse7.0及JDK1.6.0的安装及配置过程(修改)
  15. 【SQL】SQL的基础语法
  16. 【IDEA类注释模板和方法注释模板】
  17. HP刀片服务器系统Flex,HP刀片服务器系统Flex-10 VC配置与VMware vSphere网络设计
  18. 未来,你会反感虚拟现实沉浸式广告吗?
  19. 3626 三元一次方程(枚举)
  20. 什么是基类,什么是派生类

热门文章

  1. 坚果JmGo J6S投影仪刷机指南及资源下载
  2. java浮点数数转二进制的数吗_都工作两年了,还不知道浮点数如何转二进制?...
  3. java layoutinflater_LayoutInflater介绍及例子
  4. 给朋友推荐一些歌,也算是简单的整理一下自己机器里的MP3
  5. mysql 中文转义字符_Mysql中的转义字符_MySQL
  6. 基于eclipse的android项目实战—博学谷(十一)习题界面
  7. W32.Beagle.AG@mm
  8. iOS设置静音模式播放声音以及注意点
  9. 计算机科学与技术创新实验班是什么意思,我院开办计算机科学与技术专业创新人才实验班...
  10. 万能程序员时代来临!