博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Java大学教程》—第17章 Java聚焦类框架
阅读量:4653 次
发布时间:2019-06-09

本文共 2775 字,大约阅读时间需要 9 分钟。

由所有聚焦类构成,在java.util包中,包含三个重要接口:

*    List列表:元素为单个对象,元素在列表中是有序、可重复
*    Set集合:元素为单个对象,元素在集合中无序、不可重复
*    Map映射:元素为成对对象(第一个对象是关键字,第二个对象是值),元素在映射中无序,关键字不可重复
注:JCF不能存储基本数据类型。

17.2 List接口和ArrayList类

*    ArrayList类
*    LinkedList类

17.2.1    泛型(generics):允许设定存在在特定聚焦类对象中的对象类型。可以将一个或多个类型作为参数发送到一个类(或接口)中,亦被称为参数化类型。

优点:允许编译检查类型;不必进行对象类型转换;避免产生ClassCastException异常。

17.2.2    使用接口类型代替实现类型作为函数的形参

允许将来修改实现的方式而不必修改形参中对象的类型。

17.2.3    List接口的方法

操作:增加(add)❶将元素插在列表的末尾;❷将元素插入到列表中指定的位置。
注:使用索引插入参数到列表中时,必须保证索引是当前列表中的有效位置
修改(set)、删除(delete)
列表:显示(toString)、总数(size)、是否空(isEmpty)
元素:位置(indexOf)返回指定对象在列表中第一次出现时的索引。
获取(get)、存在(contains)

17.3    增强的for循环:数组、List接口、Set接口

不能用于修改或删除原始集合中的元素,因为编译可以通过,但是有可能导致程序结果不可预测。

17.4    Set接口和HashSet类

*    HashSet类
*    TreeSet类

17.4.1    Set接口的方法

操作:增加和修改(add)、删除(remove)
列表:显示(toString)、总数(size)、是否空(isEmpty)
元素:获取(get)、存在(contains)

17.4.3    Iterator接口:用于修改和删除Set中的元素

使用Set对象中提供的Iterator对象。

17.5    Map接口和HashMap类

*    HashMap类
*    TreeMap类

Map接口的方法:

操作:增加和修改(put)、删除(remove)
元素:关键字存在(containsKey)、值存在(containsValue)、值获取(get)

17.6    JCF中使用自定义类

方法重写:toString();    equals();    hashCode()

自测题:

1. 三种接口的区别:
*    List列表:元素为单个对象,元素在列表中是有序、可重复
*    Set集合:元素为单个对象,元素在集合中无序、不可重复
*    Map映射:元素为成对对象(第一个对象是关键字,第二个对象是值),元素在映射中无序,关键字不可重复

2.    Map<String, Student> javaStudents = new HashMap<String, Student>();

a)    允许将来修改实现的方式而不必修改形参中对象的类型。

b)    可以将一个或多个类型作为参数发送到一个类(或接口)中,亦被称为参数化类型。

优点:允许编译检查类型;不必进行对象类型转换;避免产生ClassCastException异常。

c)    javaStudents.put("U0012345","Fadi");

javaStudents定义的是Student类型,不能接收String类型的数据。

3.    StockItem类

a)   

public String toString(){    return "("+stockNumber+","+name+","+price+","+totalStock+")\n";}

b)

public boolean equals(Object objIn){    StockItem st = (StockItem) objIn;    return stockNumber.equals(st.stockNumber);}

c)

public int hashCode(){    return stockNumber.hashCode();}

4.

a)

String tmpString;    boolean first=true;    if (regNums.size()==0){        tmpString="{}";    } else {        StringBuilder sb = new StringBuilder();        for (String item: regNums){            if (first)    {                sb.append("{"+item);                first = false;            } else {                sb.append(","+item);            }        }        sb.append("}");        System.out.println(sb);
b)
Iterator
elements = regNums.iterator(); while(elements.hasNext()){ String item = elements.next(); if (item.charAt(item.length()-1)=='S' elements.remove(); }

编程练习:

1.    NameStack.java    NameStackException.java    NameStackTest.java
a)    因为需要可变大小的存储空间,而存储的对象必须是有序的,但是是可以重复的。

2.    CarRegister.java    CarRegisterException.java        CarRegisterTest.java

a)    因为需要可变大小的存储空间,而存储的对象可以是无序的,但是必须惟一。

3.    Book.java        Library.java    LibraryTest.java

4.    Bank.java        BankAccount.java        BankTest.java

a)    HashMap类适合代替数组实现Bank类。因为其可以满足成对对象集合的需要,还可以确定关键字。

转载于:https://www.cnblogs.com/zhuyx/p/10401913.html

你可能感兴趣的文章
Android三种基本的加载网络图片方式(转)
查看>>
jupyter notebook快捷键使用的注意点
查看>>
Linux目录架构详解 转自http://cloud.csdn.net/a/20120420/2804821.html?bsh_bid=90555089###
查看>>
C#读取大文本文件
查看>>
587. Erect the Fence
查看>>
php - php内置MySQL函数
查看>>
WAMP运行分析
查看>>
当输入URL后,会发生什么[转]
查看>>
深入理解java异常处理机制
查看>>
深入理解隐马尔可夫(HMM)模型
查看>>
css 兼容性问题,针对单个浏览器
查看>>
pp 总结一
查看>>
jquery 展开折叠效果
查看>>
集合、元组、字典
查看>>
Python_购物车问题
查看>>
c#创建windows服务
查看>>
51Nod 1050 循环数组最大子段和 | DP
查看>>
mysql的基本操作命令
查看>>
time模块和datetime模块
查看>>
4 、 数论
查看>>