Java 中的集合

发布:2024-10-18 10:21 阅读:21 点赞:0

在 Java 中,集合的层次结构用于对元素或对象进行分组,其中每个类都有其子类和方法。虽然集合不接受原始类型,但“数组”类允许包含多个相同类型的元素,包括原始类型。

1. 集合框架概述

集合框架的相关方法位于 JDK(Java 开发工具包)的 java.util 包中。主要的接口有 ListSetMap

1.1 Generics(泛型)

使用符号 <>(菱形符号)来定义泛型类型。常见的类型参数包括:

  • E:元素
  • K:键
  • N:数字
  • T:类型
  • V:值

2. Comparator 与 Comparable

这两个接口用于对集合进行排序:

  • Comparable:提供单一排序序列,影响原始类。
  • Comparator:提供多种排序序列,而不修改原始类。

3. 集合类型比较

3.1 List

  • 允许重复元素,保持插入顺序。
  • 实现示例:ArrayListLinkedList

3.2 Set

  • 不允许重复元素。
  • 实现示例:
    • HashSet:使用哈希表存储,无特定顺序。
    • TreeSet:使用平衡二叉树,保持升序。
    • LinkedHashSet:使用哈希表和双向链表,保持插入顺序。

3.3 Map

  • 将键映射到值。
  • 实现示例:
    • HashMap:使用哈希表存储,无特定顺序。
    • TreeMap:使用平衡二叉树,保持键的升序。
    • LinkedHashMap:使用哈希表和双向链表,保持插入顺序。

4. 具体实现示例

4.1 ArrayList 示例

import java.util.ArrayList;

public class ExampleArrayList {
    public static void main(String[] args) {
        // 创建一个可调整大小的数组列表
        ArrayList<String> list = new ArrayList<>();
        
        // 添加元素
        list.add("Apple"); // 添加苹果
        list.add("Banana"); // 添加香蕉
        
        // 访问元素
        System.out.println(list.get(0)); // 输出第一个元素,结果是 "Apple"
    }
}

4.2 HashSet 示例

import java.util.HashSet;

public class ExampleHashSet {
    public static void main(String[] args) {
        // 创建一个哈希集合
        HashSet<String> set = new HashSet<>();
        
        // 添加元素
        set.add("Apple"); // 添加苹果
        set.add("Banana"); // 添加香蕉
        set.add("Apple"); // 再次添加苹果,不会重复
        
        // 输出集合的大小
        System.out.println(set.size()); // 输出 2
    }
}

4.3 HashMap 示例

import java.util.HashMap;

public class ExampleHashMap {
    public static void main(String[] args) {
        // 创建一个哈希映射
        HashMap<String, Integer> map = new HashMap<>();
        
        // 添加键值对
        map.put("Apple"1); // 添加苹果,数量为 1
        map.put("Banana"2); // 添加香蕉,数量为 2
        
        // 通过键访问值
        System.out.println(map.get("Apple")); // 输出苹果的数量,结果是 1
    }
}

5. 注意事项

  • Set 中,第一个添加的元素是第一个被返回的元素。
  • Map 中,put 方法会更新或创建一个键值对。
  • Map 接口在创建集合之前无需创建类,可以直接通过键查找,无需使用循环。

6. 结论

通过理解 Java 的集合框架,我们可以高效地管理数据。各种集合类型如 ListSetMap 各自有不同的特性和应用场景,适当选择可以提高程序的性能和可读性。