编程自学指南:java程序设计开发,Java 集合框架(ArrayList/HashMap)
一、课程目标
- 理解 Java 集合框架的概念和作用。
- 掌握
ArrayList
的基本使用,包括创建、添加、删除、访问元素等操作。 - 掌握
HashMap
的基本使用,包括创建、添加、删除、查找键值对等操作。 - 能够运用
ArrayList
和HashMap
解决简单的实际问题。
二、集合框架概述(10 分钟)
1. 什么是集合框架
集合框架是 Java 提供的一组用于存储和操作数据的类和接口,它可以帮助我们更方便地管理和处理数据。
2. 集合框架的优点
- 提高代码的复用性和可维护性。
- 提供了各种数据结构和算法,方便我们进行数据操作。
- 支持泛型,提高了类型安全性。
3. 集合框架的分类
Java 集合框架主要分为两大体系:
- Collection 体系:用于存储单个元素,有三个子接口:
List
、Set
、Queue
。 - Map 体系:用于存储键值对。
三、ArrayList
1. 什么是 ArrayList
ArrayList
是 List
接口的一个实现类,它使用动态数组来存储元素。可以根据需要自动调整数组的大小。
2. 常用方法
方法名 | 描述 |
---|---|
add(E e) | 将指定的元素添加到列表的末尾 |
add(int index, E element) | 在指定位置插入指定元素 |
get(int index) | 返回列表中指定位置的元素 |
remove(int index) | 移除列表中指定位置的元素 |
size() | 返回列表中的元素个数 |
3. 示例代码
import java.util.ArrayList;
public class ArrayListExample {
public static void main(String[] args) {
// 创建一个 ArrayList 对象
ArrayList<String> fruits = new ArrayList<>();
// 添加元素
fruits.add("苹果");
fruits.add("香蕉");
fruits.add("橙子");
// 访问元素
System.out.println("第一个水果: " + fruits.get(0));
// 遍历元素
for (String fruit : fruits) {
System.out.println(fruit);
}
// 删除元素
fruits.remove(1);
System.out.println("删除香蕉后剩余的水果:");
for (String fruit : fruits) {
System.out.println(fruit);
}
// 获取列表大小
System.out.println("当前列表的大小: " + fruits.size());
}
}
4. 案例:学生成绩管理
import java.util.ArrayList;
import java.util.Scanner;
public class StudentGradeManagement {
public static void main(String[] args) {
ArrayList<Integer> grades = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
// 输入学生成绩
System.out.println("请输入学生成绩(输入 -1 结束):");
int grade;
while (true) {
grade = scanner.nextInt();
if (grade == -1) {
break;
}
grades.add(grade);
}
// 计算平均成绩
int sum = 0;
for (int g : grades) {
sum += g;
}
double average = (double) sum / grades.size();
System.out.println("学生的平均成绩是: " + average);
}
}
5. 注意事项
ArrayList
可以存储重复元素。- 元素的插入和删除操作可能会导致性能下降,尤其是在列表中间进行操作时。
四、HashMap(30 分钟)
1. 什么是 HashMap
HashMap
是 Map
接口的一个实现类,它使用哈希表来存储键值对。每个键都是唯一的,通过键可以快速查找对应的值。
2. 常用方法
方法名 | 描述 |
---|---|
put(K key, V value) | 将指定的键值对插入到映射中 |
get(Object key) | 返回指定键所映射的值,如果键不存在则返回 null |
remove(Object key) | 移除指定键对应的键值对 |
containsKey(Object key) | 判断映射中是否包含指定的键 |
size() | 返回映射中的键值对数量 |
3. 示例代码
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
// 创建一个 HashMap 对象
HashMap<String, Integer> scores = new HashMap<>();
// 添加键值对
scores.put("张三", 85);
scores.put("李四", 90);
scores.put("王五", 78);
// 访问元素
System.out.println("张三的成绩: " + scores.get("张三"));
// 遍历键值对
for (String name : scores.keySet()) {
int score = scores.get(name);
System.out.println(name + " 的成绩是: " + score);
}
// 删除元素
scores.remove("李四");
System.out.println("删除李四的成绩后:");
for (String name : scores.keySet()) {
int score = scores.get(name);
System.out.println(name + " 的成绩是: " + score);
}
// 判断是否包含某个键
System.out.println("是否包含王五的成绩: " + scores.containsKey("王五"));
// 获取映射的大小
System.out.println("当前映射的大小: " + scores.size());
}
}
4. 案例:员工信息管理
import java.util.HashMap;
import java.util.Scanner;
public class EmployeeManagement {
public static void main(String[] args) {
HashMap<String, String> employees = new HashMap<>();
Scanner scanner = new Scanner(System.in);
// 输入员工信息
System.out.println("请输入员工姓名和部门(格式:姓名 部门,输入 end 结束):");
while (true) {
String input = scanner.nextLine();
if (input.equals("end")) {
break;
}
String[] parts = input.split(" ");
String name = parts[0];
String department = parts[1];
employees.put(name, department);
}
// 查询员工信息
System.out.println("请输入要查询的员工姓名:");
String queryName = scanner.nextLine();
if (employees.containsKey(queryName)) {
System.out.println(queryName + " 所在部门是: " + employees.get(queryName));
} else {
System.out.println("未找到该员工信息。");
}
}
}
5. 注意事项
HashMap
不保证键值对的顺序。- 键不能为
null
,但值可以为null
。
五、ArrayList 与 HashMap 对比(10 分钟)
对比项 | ArrayList | HashMap |
---|---|---|
存储方式 | 存储单个元素 | 存储键值对 |
元素访问 | 通过索引访问 | 通过键访问 |
元素顺序 | 有序 | 无序 |
元素唯一性 | 可重复 | 键唯一 |
六、课堂练习
1. ArrayList 练习
创建一个 ArrayList
来存储整数,添加 1 - 10 的整数,然后删除其中的偶数,最后输出剩余的元素。
2. HashMap 练习
创建一个 HashMap
来存储水果的名称和价格,添加一些水果信息,然后根据用户输入的水果名称查询其价格。
七、课程总结
- 回顾 Java 集合框架的概念和分类。
- 总结
ArrayList
和HashMap
的基本使用方法和注意事项。 - 强调
ArrayList
和HashMap
在不同场景下的应用。
八、课后作业
- 使用
ArrayList
实现一个简单的图书管理系统,包括添加图书、删除图书、显示所有图书信息的功能。 - 使用
HashMap
实现一个简单的通讯录,包括添加联系人、删除联系人、查找联系人信息的功能。