image.png
1. 数组
定义:
数组是固定大小的线性数据结构,用于存储相同类型的多个元素。数组的大小在创建时确定,之后不能改变
特点
固定大小:一旦创建,数组的大小不能改变。
同类型元素:数组中的所有元素必须是相同的类型。
索引访问:通过索引(从 0 开始)访问元素。
内存连续:数组元素在内存中是连续存储的。
优点
访问速度快(通过索引直接访问)。
内存占用相对较小。
缺点
大小固定,不能动态调整。
不适合频繁插入和删除操作。
分类: 一维数组 二维数组
一维数组
// 声明
int[] numbers;
// 初始化
numbers = new int[5]; // 创建一个长度为 5 的整型数组
// 或者声明并初始化
int[] numbers = {1, 2, 3, 4, 5};
二维数组
// 二维数组
int[][] matrix = { // 直接定义一个带值的二维整型数组
{1, 2, 3},
{4, 5, 6}
};
int[][] arr = new int[3][4]; // 定义一个三行四列的数组空整型数组
arr[0][0] = 1; // 给数组赋值
arr[0][1] = 2;
2. 集合
定义: 集合是 Java 提供的一组接口和类,用于存储和操作一组对象。集合框架提供了多种实现,适用于不同的应用场景。常见的集合接口包括 List, Set, 和 Map。
主要接口: List 、Set 、Map
List
特点: 允许重复元素,元素有序(插入顺序)。
常用实现类: ArrayList, LinkedList, Vector。
ArrayList: 如果你需要频繁进行随机访问并且数据量较大,ArrayList 是一个不错的选择。它在大多数情况下提供了良好的性能。
LinkedList: 如果你需要频繁地在列表中间插入或删除元素,LinkedList 更加高效。但是,如果你需要频繁进行随机访问,则应避免使用 LinkedList。
Vector: 由于其线程安全性和较低的性能,除非你有特定的多线程需求且对性能要求不高,否则不推荐使用 Vector
image.png
List
import java.util.ArrayList;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>(); // 定义一个字符串类型的ArrayList集合
list.add("Apple"); // 给集合添加元素
list.add("Banana");
list.add("Orange");
System.out.println(list); // 输出 [Apple, Banana, Orange]
}
}
Set
特点: 不允许重复元素,无序或有序(取决于实现类)。
常用实现类: HashSet, LinkedHashSet, TreeSet。
import java.util.HashSet;
import java.util.Set;
public class SetExample {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 重复元素不会被添加
System.out.println(set); // 输出 [Apple, Banana] (顺序可能不同)
}
}
Map
特点: 存储键值对,键唯一,值可以重复。
常用实现类: HashMap, LinkedHashMap, TreeMap。
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Orange", 3);
System.out.println(map.get("Apple")); // 输出 1
}
}