java 菜鸟教程集合

admin 4 0

### Java集合框架:从菜鸟到精通的全面指南

在Java编程的世界里,集合框架(Java Collections Framework)是每一位开发者必须掌握的核心概念之一,它不仅简化了数据结构的操作,还通过提供一套统一的接口和算法,极大地提高了代码的可读性、可维护性和复用性,本文将从零开始,带领你从Java集合的菜鸟成长为能够熟练运用各种集合类的专家。

#### 一、集合框架概述

Java集合框架是一个用于表示和操作集合的统一架构,它位于`java.util`包中,集合框架主要包括两大接口:`Collection`和`Map`,以及它们各自的子接口和实现类,`Collection`接口代表一组元素,而`Map`接口则代表一组键值对。

- **Collection接口**:是List、Set和Queue等集合的根接口,提供了基本的集合操作,如添加、删除、遍历等。

- **Map接口**:用于存储键值对,一个键可以映射到最多一个值,Map接口的实现类如HashMap、TreeMap等提供了不同的存储和检索策略。

#### 二、List接口及其实现

List接口是Collection接口的子接口,它代表一个有序的集合,允许包含重复的元素,List接口的实现类主要有ArrayList、LinkedList和Vector等。

- **ArrayList**:基于动态数组实现,适合随机访问元素,但在列表中间插入或删除元素时效率较低。

- **LinkedList**:基于链表实现,适合在列表中间频繁插入或删除元素,但随机访问元素时效率较低。

- **Vector**:是ArrayList的同步版本,但由于其性能较低,在现代Java开发中已较少使用。

**示例代码**:

import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Cherry");

        for (String fruit : fruits) {
            System.out.println(fruit);
        }

        // 使用List的get方法访问特定位置的元素
        System.out.println(fruits.get(1)); // 输出Banana
    }
}

#### 三、Set接口及其实现

Set接口也是Collection接口的子接口,但它不包含重复的元素,Set接口的实现类主要有HashSet、LinkedHashSet和TreeSet等。

- **HashSet**:基于HashMap实现,不保证集合的迭代顺序。

- **LinkedHashSet**:是HashSet的子类,它维护了一个运行于所有条目的双向链表,因此能够按照元素被添加到集合中的顺序进行迭代。

- **TreeSet**:基于红黑树实现,能够确保集合元素处于排序状态。

import java.util.HashSet;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        Set<String> uniqueFruits = new HashSet<>();
        uniqueFruits.add("Apple");
        uniqueFruits.add("Banana");
        uniqueFruits.add("Apple"); // 重复添加,不会生效

        for (String fruit : uniqueFruits) {
            System.out.println(fruit);
        }

        // TreeSet示例
        Set<Integer> sortedNumbers = new TreeSet<>();
        sortedNumbers.add(3);
        sortedNumbers.add(1);
        sortedNumbers.add(2);

        for (Integer number : sortedNumbers) {
            System.out.println(number); // 输出将是有序的:1, 2, 3
        }
    }
}

#### 四、Map接口及其实现

Map接口用于存储键值对,一个键可以映射到最多一个值,Map接口的实现类主要有HashMap、LinkedHashMap、TreeMap和Hashtable等。

- **HashMap**:基于哈希表实现,不保证映射的顺序。

- **LinkedHashMap**:是HashMap的子类,它维护了一个运行于所有条目的双向链表,因此能够按照元素被添加到映射中的顺序进行迭代。

- **TreeMap**:基于红黑树实现,能够确保映射按照键的自然顺序或创建映射时提供的Comparator进行排序。

- **Hashtable**:是HashMap的同步版本,但由于其性能较低,在现代Java开发中已较少使用。

```java

import java.util.HashMap;

import java.util.Map;

public class MapExample {

public static void main(String[] args) {

Map fruitCounts = new HashMap();

fruitCounts.put("Apple",