天天看点

《Java大学教程》—第17章 Java聚焦类框架

由所有聚焦类构成,在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)

元素:获取(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. 三种接口的区别:

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

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

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

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

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

3.    StockItem类

a)    

b)

c)

4.

a)

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类。因为其可以满足成对对象集合的需要,还可以确定关键字。