《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)
列表:显示(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<String> 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类。因为其可以满足成对对象集合的需要,还可以确定关键字。

本文转自BlogJava朱远翔的博客,原文链接:《Java大学教程》—第17章 Java聚焦类框架,如需转载请自行联系原博主。

相关文章
|
2月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
2月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
102 4
|
2月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
168 5
|
2月前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
160 1
|
2月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
216 1
|
2月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
156 1
|
2月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
176 1
|
SQL Java 数据库连接
Java面试题日积月累(SSM框架面试题22道)
Java面试题日积月累(SSM框架面试题22道)
282 0
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
239 1