第7章 集合类 - 补充案例(6)

2019-09-01 20:40

博学谷——让IT教学更简单,让IT学习更有效

三、案例总结

1、在本案例中,演示了TreeMap集合中元素的存储和迭代方法与HashMap相同。从输出结果可以看出,TreeMap集合中的元素是不重复的,并且按照值的自然顺序进行了排序。这是因为在TreeMap中是通过二叉树的原理来保证键的唯一性,这个TreeSet集合存储的原理一样,因此TreeMap中所有的键是按照某种顺序排列的。

2、本案例中,在定义TreeMap集合时使用了泛型,即<参数化类型>。它可以指定该类中方法操作的数据类型,避免在集合存取时会产生的数据类型转化的错误。

案例7-16 Proeprties集合的功能

一、案例描述

1、 考核知识点

编号:00107016

名称:Proeprties集合

2、 练习目标

? 掌握Proeprties集合的存储和遍历方法

3、 需求分析

Map接口中还有一个实现类Hashtable,它和HashMap的区别是Hashtable是线程安全的。Hashtable类有一个子类Properties在实际应用中非常重要,Properties主要用来存储字符串类型的键和值,为了掌握Properties集合的使用,本案例将演示Properties集合中元素的存储,修改和遍历。

4、 设计思路(实现原理)

1) 编写一个类Example16,创建Proeprties集合对象 2) 向Proeprties集合中添加元素 3) 遍历Proeprties集合中的元素

二、案例实现

import java.util.*; public class Example16{

public static void main(String[] args) {

// 创建集合对象

Properties prop = new Properties();

//添加元素

prop.setProperty(\刘备\双股剑\

prop.setProperty(\关羽\青龙偃月刀\ prop.setProperty(\张飞\丈八蛇矛\

Set set = prop.stringPropertyNames(); for (String key : set) {

26

博学谷——让IT教学更简单,让IT学习更有效

}

String value = prop.getProperty(key); System.out.println(key + \

}

}

运行结果如图7-21所示。

图7-21 运行结果

三、案例总结

Properties类中,针对字符串的存取提供了两个专用的方法setProperty()和getProperty()。setProperty()方法用于将配置项的键和值添加到Properties集合当中。propertyNames()方法得到一个包含所有键的set对象,然后在遍历所有的键时,通过调用getProperty()方法获得键所对应的值。

案例7-17 泛型的使用

一、案例描述

1、 考核知识点

编号:00107017 名称:泛型的使用

2、 练习目标

? 了解为什么要使用泛型 ? 掌握泛型的使用方法

3、 需求分析

集合可以存储任何类型的对象,但是在程序中无法确定一个集合中的元素到底是什么类型的。那么在取出元素时,如果进行强制类型转换就很容易出错。为了解决这个问题,在Java中引入了“参数化类型(parameterized type)”这个概念,即泛型。本案例将使用泛型来限定集合元素的数据类型,从而方便初学者学习泛型的使用方法。

4、 设计思路(实现原理)

1) 编写一个类Example17,创建ArrayList集合对象,并指定集合只能存储String类型的元素 2) 向集合中添加元素,其中有一个Integer类型的元素 3) 遍历集合中的元素,观察结果是否报错

二、案例实现

import java.util.*; public class Example17 {

27

博学谷——让IT教学更简单,让IT学习更有效

}

public static void main(String[] args) { }

// 用ArrayList存储字符串并遍历

ArrayList array = new ArrayList(); array.add(\array.add(\array.add(\

array.add(new Integer(10));//添加一个Integer类型的数据,此处报编译异常 Iterator it = array.iterator(); while (it.hasNext()) { }

String s = (String) it.next(); System.out.println(s);

编译程序发现报错,如图7-22所示。

图7-22 编译报错

错误显示array中不能再存入除String类型之外的数据类型,将Integer类型数据删掉,重新编译运行程序,结果如图7-23所示。

图7-23 运行结果

三、案例总结

1、在定义集合类时,可以使用“<参数化类型>”的方式指定该类中方法操作的数据类型,具体格式如下:

ArrayList<参数化类型> list = new ArrayList<参数化类型>();

2、在本案例中,使用泛型规定了ArrayList集合只能存入String类型元素。需要注意的是,在使用泛型后每次遍历集合元素时,可以指定元素类型为String,而不是Object,这样就避免了在程序中进行强制类型转换。

3、在程序中也可以自定义泛型,自定义泛型的具体代码如下:

28

博学谷——让IT教学更简单,让IT学习更有效

class cachePool { // 在创建类时,声明参数类型为T T temp;

public void save(T temp) { // 在创建save()方法时,指定参数类型为T

this.temp = temp; }

public T get() { // 在创建get()方法时,指定返回值类型为T }

return temp; }

在定义CachePool类时,声明了参数类型为T,例如:在实例化对象时通过将参数T指定为Integer类型,同时在调用save()方法时传入的数据也是Integer类型,那么调用get()方法取出的数据自然就是Integer类型,这样做的好处是不需要进行类型转换。

案例7-18 Collections类对集合的操作

一、案例描述

1、 考核知识点

编号:00107019

名称:Collections工具类

2、 练习目标

? 掌握如何使用Collections类对集合进行操作

3、 需求分析

在程序中,针对集合的操作非常频繁,针对这些常见操作,JDK提供了一个工具类专门用来操作集合,这个类就是Collections。为了初学者能够熟悉Collections类中的方法,本案例将使用Collections类中的各种方法操作集合实现模拟斗地主发牌,来学习Collections类对集合操作的方法。

4、 设计思路(实现原理)

1) 编写类Example18,创建两个String类型数组,其中一个用于存储牌的花色,一个用于存储

牌的数字

2) 创建一个ArrayList集合作为牌盒,将大小王和不同花色不同数字的牌循环添加到集合中 3) 用Collections工具类的shuffle()方法洗牌

4) 创建三个ArrayList集合作为三个人的牌的集合,并循环发牌,要留三张底牌 5) 打印出三个人的牌和集合中留的三张底牌

二、案例实现

import java.util.*; public class Example18 {

public static void main(String[] args) {

// 表示花色的数组

String[] colors = { \黑桃\红桃\梅花\方块\

29

博学谷——让IT教学更简单,让IT学习更有效

}

}

// 表示点数的数组

String[] numbers = { \

\

// 找一个牌盒

ArrayList array = new ArrayList(); array.add(\大王\array.add(\小王\// 循环装牌

for (String c : colors) { } // 洗牌

Collections.shuffle(array); // 发牌

ArrayList linString = new ArrayList(); ArrayList zhouString = new ArrayList(); ArrayList meString = new ArrayList(); // 用普通for

for (int x = 0; x < array.size() - 3; x++) { } // 看牌

System.out.println(\System.out.println(\System.out.println(\// 看底牌

System.out.print(\三张底牌:\

for (int x = array.size() - 3; x < array.size(); x++) { }

System.out.print(array.get(x) + \if (x % 3 == 0) { }

linString.add(array.get(x)); zhouString.add(array.get(x)); meString.add(array.get(x)); } else if (x % 3 == 1) { } else if (x % 3 == 2) { for (String n : numbers) { }

array.add(c.concat(n));

运行结果如图7-24所示。

30


第7章 集合类 - 补充案例(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:质量经理工作手册

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: