### Java集合小结 #### 一、集合的概念与重要性 集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,集合可以视为对数组进行的一种高级封装。 **1. 数据结构简介** 数据结构是指相互之间存在一种或多种子特定关系的数据元素的集合。常见的数据结构包括: - **数组**:最简单的数据结构之一,能够存储相同类型的多个数据项。 - **栈**:遵循后进先出(LIFO)原则的数据结构。 - **链表**:由一系列节点组成,每个节点包含数据和指向下一个节点的指针。 - **哈希表**:利用哈希函数将键映射到值的数据结构。 - **队列**:遵循先进先出(FIFO)原则的数据结构。 - **堆**:特殊的完全二叉树结构。 - **图**:由顶点和边组成的非线性数据结构。 - **树**:层次化的数据结构,每个节点最多有一个父节点。 **2. Java集合框架** Java集合框架是对各种数据结构的抽象和封装,主要包括`Collection`和`Map`两种类型: - **Collection**:代表一组对象,其主要接口有`List`、`Set`。 - `List`:有序集合,允许重复元素。 - `ArrayList`:基于动态数组实现。 - `LinkedList`:基于双向链表实现。 - `Vector`:线程安全的`List`实现。 - `Set`:不允许重复元素的集合。 - `HashSet`:基于哈希表实现。 - `LinkedHashSet`:保持元素插入顺序的`HashSet`。 - `TreeSet`:基于红黑树实现的有序集合。 - **Map**:键值对集合。 - `HashMap`:基于哈希表实现。 - `LinkedHashMap`:保持元素插入顺序的`HashMap`。 - `Hashtable`:线程安全的`Map`实现。 - `Properties`:用于读取配置文件的`Map`实现。 - `TreeMap`:基于红黑树实现的有序`Map`。 #### 二、集合框架结构 ##### 1. 结构图 ```plaintext +-----------------+ | Collection | | | | +-- List | | | +-- ArrayList| | | +-- LinkedList| | | +-- Vector | | | | | +-- Set | | +-- HashSet | | +-- LinkedHashSet | | +-- TreeSet | +-----------------+ ``` - **Collection**根接口:定义了一组对象的通用操作,如添加、删除、查询等。 - **List**接口:定义了有序且可重复元素的集合。 - **Set**接口:定义了不可重复元素的集合。 - **Map**接口:定义了键值对的集合。 ##### 2. 使用示例 ```java Collection collection = new ArrayList<>(); // 使用Collection接口声明,便于替换不同的集合实现 ``` #### 三、集合操作与遍历 **1. List操作** - **增加**:`add()`、`add(int index, E element)`、`addAll(Collection<? extends E> c)` - **移除**:`clear()`、`remove(int index)` - **查询**:`contains(E element)`、`get(int index)`、`indexOf(Object o)` - **修改**:`set(int index, E element)` **2. 遍历集合** - **使用Iterator** ```java Iterator it = list.iterator(); while (it.hasNext()) { Object obj = it.next(); System.out.println(obj); } ``` - **使用ListIterator** ```java ListIterator listIt = list.listIterator(); while (listIt.hasNext()) { Object obj = listIt.next(); System.out.println(obj); } ``` - **使用foreach循环** ```java for (Object obj : list) { System.out.println(obj); } ``` **3. Map遍历** ```java Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, String> entry = it.next(); System.out.println("key=" + entry.getKey() + " and value=" + entry.getValue()); } ``` #### 四、ArrayList与LinkedList **1. ArrayList** - **底层实现**:基于动态数组实现。 - **常用方法**: - `add(E e)`:在列表末尾添加元素。 - `remove(int index)`:移除指定位置的元素。 - `get(int index)`:获取指定位置的元素。 - `size()`:返回列表中元素的数量。 - `contains(E e)`:判断列表是否包含指定元素。 **2. LinkedList** - **底层实现**:基于双向链表实现。 - **常用方法**: - 除了`ArrayList`中提到的方法外,还提供了: - `pop()`:从此列表所表示的堆栈处弹出一个元素。 - `push(E e)`:将元素推入此列表所表示的堆栈。 - **优势**:适合频繁插入和删除操作的场景。 #### 五、Set与TreeSet **1. HashSet** - 基于哈希表实现的`Set`,元素无序且不允许重复。 **2. TreeSet** - 基于红黑树实现的`Set`,能够保证元素有序(默认为升序)。 - 要求存储的元素必须实现`Comparable`接口,或者在创建`TreeSet`时提供自定义的比较器。 - 示例代码: ```java TreeSet<Integer> ts = new TreeSet<>(); ts.add(1); ts.add(3); ts.add(10); ``` 以上概述了Java集合的主要概念和用法,掌握这些内容对于Java开发者来说至关重要。
剩余6页未读,继续阅读
- 粉丝: 3
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助