码上焚香

Yahocen

Java 的集合框架

9
2024-09-07

Java 的集合框架(Collection Framework)是一组接口和实现这些接口的类,它包括了多种容器类型,如 List、Set、Map 等。

集合框架的主要接口

  1. Collection

    1. Collection 是所有集合类的根接口,它定义了集合的基本操作,如添加、删除、遍历等

  2. List

    1. List 是一个有序的集合,允许重复元素

    2. 实现类包括 ArrayList(基于动态数组)、LinkedList(基于双向链表)和Vector(线程安全的ArrayList)等

  3. Set

    1. Set 是一个不允许重复的集合

    2. 实现类包括 HashSet(基于哈希表)、TreeSet(基于红黑树)和LinkedHashSet(保证插入顺序)等

  4. Queue

    1. Queue 用于保存等待处理的任务、通常遵循先进先出(FIFO)的原则

    2. 实现类包括 ArrayBlockingQueuePriorityQueue

  5. Map

    1. Map 是一种将键映射到值的集合,键必须唯一。

    2. 实现类包括 HashMap(基于哈希表)、TreeMap(基于红黑树)和 LinkedHashMap(保证插入顺序)等

主要实现类

  1. List

    1. ArrayList:基于动态数组实现,支持快速随机访问,适用于频繁查询的场景

    2. LinkedList:基于双向链表实现,支持快速插入和删除操作,适用于频繁增删的场景

    3. Vector:线程安全的 ArrayList,同步方法用于线程安全,但性能较低

  2. Set

    1. HashSet:基于哈希表实现,提供高效的添加、删除和查找操作

    2. TreeSet:基于红黑树实现,支持排序和有序遍历

    3. LinkedHashSet:结合了 HashSet 的高性能和 LinkedHashMap 的插入顺序,适合需要保留元素插入顺序的场景

  3. Queue

    1. ArrayBlockintQueue:基于固定大小的数组实现的阻塞队列,适用于多线程环境

    2. PriorityQueue:基于最小堆实现的优先级队列,适用于需要按优先级处理任务的场景

  4. Map

    1. HashMap:基于哈希表实现的键值对映射,提供高效的键值检索

    2. TreeMap:基于红黑树实现的键值对映射,支持键的自然排序

    3. LinkedHashMap:结合了 HashMap 的高效性和 LinkedHashMap 的插入顺序,适合需要保留键值对插入顺序的场景

常用方法

集合框架中的一些常用方法包括:

  1. add():将元素添加到集合中。

  2. remove():从集合中移除元素。

  3. contains():检查集合中是否包含指定元素。

  4. size():返回集合中的元素数量。

  5. isEmpty():判断集合是否为空。

  6. iterator():获取迭代器用于遍历集合中的元素。

  7. clear():清空集合中的所有元素。

集合框架的优势

  1. 类型安全:通过泛型机制,可以确保集合中的元素类型一致。

  2. 灵活性:提供了丰富的接口和实现类,可以满足不同的需求。

  3. 高效性:不同的实现类针对不同的操作进行了优化。

  4. 可扩展性:可以通过继承现有的集合类或实现相应的接口来创建自定义的集合。

示例代码

ArrayList 示例

import java.util.ArrayList;

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

        System.out.println("List: " + list);
        
        if (list.contains("Banana")) {
            System.out.println("Found Banana in the list.");
        }
        
        list.remove("Cherry");
        System.out.println("Updated List: " + list);
    }
}

HashSet 示例

import java.util.HashSet;

public class HashSetExample {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("Apple");
        set.add("Banana");
        set.add("Cherry");
        set.add("Banana"); // 不允许重复元素

        System.out.println("Set: " + set);
        
        if (set.contains("Banana")) {
            System.out.println("Found Banana in the set.");
        }
    }
}

HashMap 示例

import java.util.HashMap;

public class HashMapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Cherry", 3);

        System.out.println("Map: " + map);
        
        if (map.containsKey("Banana")) {
            System.out.println("Found Banana in the map with value: " + map.get("Banana"));
        }
    }
}