Java集合类程序设计

Java基础案例教程第二版
Java基础程序设计的报告
Java集合类程序设计

设备仪器/软件环境
1.Windows7以上Windows系列操作系统
2.JDK8
3.eclipse
实验(实训)目标
1.掌握Collection以及List集合常用方法的使用。
2.掌握迭代器,增强for循环的使用。
3.掌握List集合和Map集合特点及常用方法的使用。
4.掌握集合遍历的方式。
5.掌握Map集合特点及常用方法的使用。

实验(实训)过程/步骤

实施步骤及相关过程运行效果截图
项目一:库存管理系统
(1)定义仓库产品类,自定义对象定义属性。
(2)在类中定义集合,将要存储的自定义对象作为泛型。
(3)主方法中为集合添加初始化的数据,采用无线循环的方式显示菜单栏。用if…else语句判断用户索要进行的操作,用户可以键盘输入1、2、3来选择对应的操作。如果输入1可以进行商品入库,输入2可以显示库房内所有商品,输入3可以删除进行商品出库,如果不是1、2、3则提示用户操作失败。
(4) 定义商品入库的方法,选择后首先提示用户是否录入商品。输入“no”不录入商品。直接退出并显示所有商品。输入其他任何数据开始录入商品并提示键盘输入什么。录入完毕后退出并显示所有商品。
(5) 定义显示仓库所有商品的方法,用Iterator迭代器的方法循环遍历集合打印,实现商品显示。
(6) 定义商品出库的方法,用集合删除的方法移除要删除的商品。
项目二:斗地主洗牌发牌
(1)要实现纸牌程序,首先需要完成纸牌的组装。牌面是由花色(包括♠、♥、♦、♣花色)和数字(包括J、Q、K、A字母)两部分组成,可以创建两个ArrayList集合作为花色集合与数字集合,存储时需要注意。比10大的牌的数字用J、Q、K表示,1用A表示。
(2)将花色集合与数字集合这两个循环进行嵌套循环,将花色与数字组合,形成52章牌,并赋予其编号。将组合后的牌存放到一个HashMap集合中,集合的Key值是编号,value值是组装完成的纸牌。还有两张牌是大小王(小☺表示小王、大☻表示大王)。由于组装规则不一致,需单独使用add()方法将这两张牌加入到HashMap集合中。
(3)创建一个数字集合,用这个数字集合代替纸牌完成洗牌和发牌操作。由于纸牌的数量是54张,所以创建集合范围是0~53。
(4)可以使用Collection类的shuffle()方法完成打乱数字集合的操作,实现洗牌效果。由于只有3个人,所以可以使用for循环,通过将数字与3取余的方法,将代表不同纸牌的数字分配给不同人与底牌,实现发牌效果。
(5) 洗牌和发牌结束后,可以通过Collection类的sort()方法完成排序,之后通过foreach()循环HashMap集合,根据数字查找对应的纸牌字符串,并存入创建的字符串集合中,最后展示字符串集合。
项目三:模拟百度翻译器
(1)百度翻译主要用于翻译对应的意思。这是一种映射关系。因此可以用 Map集合来实现,所以首先就是定义Map集合,存储数据。
(2)用键盘录入功能获取我们要翻译的单词。
(3)定义一个方法,在该方法中实现对单词的查询操作,并且根据不同情况给出相关提示。
(4)调用查询的方法,实现翻译。并将结果输出到控制台。
结果记录与分析总结
项目任务运行效果截图
项目一:库存管理系统

在这里插入图片描述

项目二:斗地主洗牌发牌
在这里插入图片描述

项目三:模拟百度翻译器
在这里插入图片描述

结果记录与分析总结
项目任务实施中用到的知识总结及遇到的问题分析

Collection单列集合类的根接口:
1.List:元素有序、可重复ArrayList LinkedList
2.Set:元素无序、不可重复HashSet TreeSet
Map双列集合类的根接口 :
键值不可重复且每个键最多只能映射到一个值,使用Map集合时可通过指定的Key找到对应的Value
1.HashMap
2.TreeMapt
List接口
继承Collection接口元素有序、可重复,在程序中可以通过索引访问List集合中的指定元素,ArrayList内部封装封装了一个长度可变的数组对象。
集合和数组一样,索引的取值范围是从0开始的,最后一个索引是size-1,另外,在编写程序时,不要忘记使用import java.util.ArrayList;语句导包,如果出现错误,可将鼠标指针移动到报出错误的代码ArrayList()上,使用[Ctrl+Enter]快捷键就可以自动导入ArrayList的包,也可以使用import java.util.;来进行导包,其中为通配符,整个语句的意思为java.util包中的内容都导入进来。
ArrayList集合在查询元素时速度很快,但在增加或删除元素时效率较低。LinkedList集合内部维护了一个双向循环链表,链表中的每个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素连接起来。当插入一个新元素时,只需要修改元素之间的这种引用关系即可。正因为有这种存储结构,所以LinkedList集合进行元素的增加或删除操作时效率很高。
Iterator接口会遍历集合中所有的元素 。接口与接口主要用于存储元素,而它主要用于迭代访问及遍历的元素。迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素 。通过迭代器获取集合中的元素是这些元素的类型都是object类型。如果想获取到特定类型的元素,则需要对数据类型进行强制转换。
Iterator循环是一种更加简洁的for循环,也称增强for循环,常用于遍历数组或集合中的元素。与for循环相比,Iterator循环不需要获得容器的长度,也不需要根据索引访问容器中的元素,但它会自动遍历容器中的每个元素。循环的次数是由容器中的元素的个数决定的。
Hashset是根据对象的散列值来确定元素在集合中的存储位置,具有良好的存取和查找性能 treeset则是以二叉树的方式来存储元素,它会实现对集合中的元素进行排序 ,为了保证hashset正常工作,要求在存入对象时,重写object类中hashcode和equals方法。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值