Java 集合

Java 集合

在 Java 编程中,集合框架(java.util 包)是处理一组对象的强大工具。与数组不同,集合提供了更灵活的数据存储和操作方式。本文将详细介绍 Java 集合框架的核心接口、常用实现类及其应用场景,帮助你更好地理解和使用集合。


1. 什么是集合?

集合是用于存储一组对象的容器。Java 集合框架提供了多种数据结构和算法,方便开发者对数据进行增删改查等操作。集合框架主要分为两大类:

  1. Collection 接口:用于存储一组对象。
  2. Map 接口:用于存储键值对(key-value)。

2. 集合框架的核心接口

2.1 Collection 接口

Collection 是集合框架的根接口,它有三个主要的子接口:

  1. List:有序且允许重复元素的集合。
  2. Set:无序且不允许重复元素的集合。
  3. Queue:用于存储待处理元素的队列。
2.2 Map 接口

Map 用于存储键值对,键(key)是唯一的,值(value)可以重复。常见的实现类有 HashMapTreeMap 等。


3. 集合与数组的对比

特性数组集合
容量固定大小动态扩展
数据类型可以存储基本类型和引用类型只能存储引用类型
功能功能有限提供丰富的操作方法
适用场景数据量固定且简单数据量动态变化且复杂

4. List 集合

List 是有序且允许重复元素的集合,常用的实现类有 ArrayListLinkedList

4.1 ArrayList

ArrayList 是基于动态数组实现的,适合随机访问和遍历。

常用方法

  • add(E e):添加元素。
  • remove(int index):删除指定位置的元素。
  • get(int index):获取指定位置的元素。
  • set(int index, E element):修改指定位置的元素。

示例

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

public class ArrayListDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Python");
        list.add("C++");
        System.out.println(list); // 输出: [Java, Python, C++]
    }
}
4.2 LinkedList

LinkedList 是基于双向链表实现的,适合频繁的插入和删除操作。

常用方法

  • addFirst(E e):在链表头部添加元素。
  • addLast(E e):在链表尾部添加元素。
  • removeFirst():删除链表头部的元素。
  • removeLast():删除链表尾部的元素。

示例

import java.util.LinkedList;

public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("Java");
        list.addFirst("Python");
        list.addLast("C++");
        System.out.println(list); // 输出: [Python, Java, C++]
    }
}

5. Set 集合

Set 是无序且不允许重复元素的集合,常用的实现类有 HashSetTreeSet

5.1 HashSet

HashSet 是基于哈希表实现的,适合快速查找和去重。

常用方法

  • add(E e):添加元素。
  • remove(Object o):删除元素。
  • contains(Object o):判断是否包含指定元素。

示例

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

public class HashSetDemo {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("Java");
        set.add("Python");
        set.add("Java"); // 重复元素不会被添加
        System.out.println(set); // 输出: [Java, Python]
    }
}
5.2 TreeSet

TreeSet 是基于红黑树实现的,元素会按照自然顺序或自定义顺序排序。

示例

import java.util.TreeSet;
import java.util.Set;

public class TreeSetDemo {
    public static void main(String[] args) {
        Set<String> set = new TreeSet<>();
        set.add("Java");
        set.add("Python");
        set.add("C++");
        System.out.println(set); // 输出: [C++, Java, Python]
    }
}

6. Map 集合

Map 用于存储键值对,常用的实现类有 HashMapTreeMap

6.1 HashMap

HashMap 是基于哈希表实现的,适合快速查找和插入。

常用方法

  • put(K key, V value):添加键值对。
  • get(Object key):根据键获取值。
  • remove(Object key):删除指定键的映射。

示例

import java.util.HashMap;
import java.util.Map;

public class HashMapDemo {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("Java", "编程语言");
        map.put("Python", "脚本语言");
        System.out.println(map.get("Java")); // 输出: 编程语言
    }
}
6.2 TreeMap

TreeMap 是基于红黑树实现的,键会按照自然顺序或自定义顺序排序。

示例

import java.util.TreeMap;
import java.util.Map;

public class TreeMapDemo {
    public static void main(String[] args) {
        Map<String, String> map = new TreeMap<>();
        map.put("Java", "编程语言");
        map.put("Python", "脚本语言");
        map.put("C++", "系统编程语言");
        System.out.println(map); // 输出: {C++=系统编程语言, Java=编程语言, Python=脚本语言}
    }
}

7. 集合的应用场景

  1. 动态数据存储:当数据量不确定时,使用集合比数组更灵活。
  2. 去重:使用 Set 集合可以轻松实现数据去重。
  3. 键值对存储:使用 Map 集合可以方便地存储和查找键值对。
  4. 排序:使用 TreeSetTreeMap 可以实现元素的自动排序。

8. 小结

  • 集合框架是 Java 中处理一组对象的强大工具,分为 CollectionMap 两大类。
  • List 是有序且允许重复的集合,常用实现类有 ArrayListLinkedList
  • Set 是无序且不允许重复的集合,常用实现类有 HashSetTreeSet
  • Map 是键值对的集合,常用实现类有 HashMapTreeMap
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值