Java 学习系列(14):Java 集合框架详解

Java 学习系列(14):Java 集合框架详解

1. Java 集合框架概述

Java 集合框架是 Java 提供的一组数据结构和算法的集合,主要用于存储和操作数据。集合框架提供了多种常用的数据结构,如列表、集合、映射等。它能够简化数据存储、访问、处理等操作。

集合框架主要分为 ListSetQueueMap 四大接口,并提供了多个实现类。我们将逐一介绍这些接口及其实现类。

2. List 接口

List 是一个有序集合,允许元素重复,并且支持通过索引访问元素。

2.1 常用实现类

  • ArrayList:基于动态数组实现,支持快速随机访问。
  • LinkedList:基于双向链表实现,适用于频繁插入和删除操作。

2.2 示例代码

import java.util.*;

public class ListExample {
    public static void main(String[] args) {
        // 创建一个ArrayList
        List<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Python");
        list.add("C++");
        
        // 通过索引访问元素
        System.out.println("第一个元素: " + list.get(0));

        // 输出列表
        for (String lang : list) {
            System.out.println(lang);
        }
    }
}

2.3 LinkedList 示例

import java.util.*;

public class LinkedListExample {
    public static void main(String[] args) {
        // 创建一个LinkedList
        LinkedList<String> list = new LinkedList<>();
        list.add("Java");
        list.add("Python");
        list.add("C++");

        // 在列表开头插入元素
        list.addFirst("JavaScript");

        // 输出列表
        for (String lang : list) {
            System.out.println(lang);
        }
    }
}

3. Set 接口

Set 是一个不允许重复元素的集合。它不保证元素的顺序。

3.1 常用实现类

  • HashSet:基于哈希表实现,操作速度较快。
  • LinkedHashSet:基于哈希表和链表实现,保证元素插入的顺序。
  • TreeSet:基于红黑树实现,自动对元素进行排序。

3.2 示例代码

import java.util.*;

public class SetExample {
    public static void main(String[] args) {
        // 创建一个HashSet
        Set<String> set = new HashSet<>();
        set.add("Java");
        set.add("Python");
        set.add("C++");
        set.add("Java");  // 重复的元素会被忽略
        
        // 输出集合
        for (String lang : set) {
            System.out.println(lang);
        }
    }
}

3.3 TreeSet 示例

import java.util.*;

public class TreeSetExample {
    public static void main(String[] args) {
        // 创建一个TreeSet
        Set<String> set = new TreeSet<>();
        set.add("Java");
        set.add("Python");
        set.add("C++");

        // 输出自动排序后的集合
        for (String lang : set) {
            System.out.println(lang);
        }
    }
}

4. Queue 接口

Queue 是一种先进先出(FIFO)的数据结构。常用于处理排队任务等。

4.1 常用实现类

  • LinkedList:实现了 Queue 接口,支持队列操作。
  • PriorityQueue:基于优先级堆实现的队列,队列中的元素会根据优先级排序。

4.2 示例代码

import java.util.*;

public class QueueExample {
    public static void main(String[] args) {
        // 创建一个LinkedList作为队列
        Queue<String> queue = new LinkedList<>();
        queue.offer("Java");
        queue.offer("Python");
        queue.offer("C++");

        // 输出队列并移除元素
        while (!queue.isEmpty()) {
            System.out.println("队列头部: " + queue.poll());
        }
    }
}

4.3 PriorityQueue 示例

import java.util.*;

public class PriorityQueueExample {
    public static void main(String[] args) {
        // 创建一个PriorityQueue
        Queue<Integer> queue = new PriorityQueue<>();
        queue.offer(10);
        queue.offer(30);
        queue.offer(20);

        // 输出队列并移除元素
        while (!queue.isEmpty()) {
            System.out.println("队列头部: " + queue.poll());
        }
    }
}

5. Map 接口

Map 是一个键值对集合,其中每个键只能对应一个值。常用于存储关联数据。

5.1 常用实现类

  • HashMap:基于哈希表实现,操作速度较快。
  • LinkedHashMap:基于哈希表和链表实现,保持插入顺序。
  • TreeMap:基于红黑树实现,自动对键进行排序。

5.2 示例代码

import java.util.*;

public class MapExample {
    public static void main(String[] args) {
        // 创建一个HashMap
        Map<String, String> map = new HashMap<>();
        map.put("Java", "编程语言");
        map.put("Python", "编程语言");
        map.put("C++", "编程语言");

        // 输出键值对
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

5.3 TreeMap 示例

import java.util.*;

public class TreeMapExample {
    public static void main(String[] args) {
        // 创建一个TreeMap
        Map<Integer, String> map = new TreeMap<>();
        map.put(3, "Java");
        map.put(1, "Python");
        map.put(2, "C++");

        // 输出自动排序后的键值对
        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

6. 集合的遍历方式

Java 集合框架提供了多种遍历集合的方式:

  • 增强的 for 循环:适用于 List、Set、Map 的遍历。
  • Iterator:通过 Iterator 接口进行遍历。
  • forEach:Java 8 引入的 Lambda 表达式遍历。

6.1 使用增强的 for 循环

List<String> list = Arrays.asList("Java", "Python", "C++");
for (String lang : list) {
    System.out.println(lang);
}

6.2 使用 Iterator

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

6.3 使用 forEach(Java 8)

list.forEach(lang -> System.out.println(lang));

7. 总结

  • List:有序集合,允许重复元素,常用实现类包括 ArrayListLinkedList
  • Set:不允许重复元素,常用实现类包括 HashSetLinkedHashSetTreeSet
  • Queue:队列,常用于存储需要按顺序处理的元素,常用实现类包括 LinkedListPriorityQueue
  • Map:键值对集合,常用实现类包括 HashMapLinkedHashMapTreeMap

下一期:《Java 学习系列(15):Java 8 新特性详解》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值