Java---常见集合类

在Java中,集合类(Collection Framework)是一组用于存储和操作对象的类和接口。这些集合类提供了各种数据结构和算法,使得开发者可以方便地进行数据的存储、检索、排序和操作。下面我们将详细讲解Java中常见的集合类,并通过示例代码来帮助大家更好地理解。

1. 集合类的层次结构

Java集合框架主要由以下几个核心接口和类组成:

  • Collection:集合层次结构的根接口,定义了集合的基本操作。

    • List:有序集合,允许重复元素。
      • ArrayList
      • LinkedList
    • Set:无序集合,不允许重复元素。
      • HashSet
      • TreeSet
    • Queue:队列,先进先出(FIFO)。
      • LinkedList
      • PriorityQueue
  • Map:键值对集合,每个键对应一个值。

    • HashMap
    • TreeMap

2. List 接口及其实现类

List 接口表示有序的集合,允许重复元素。常见的实现类有 ArrayListLinkedList

2.1 ArrayList

ArrayList 是基于动态数组实现的,支持随机访问,插入和删除操作较慢。

示例代码:

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

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

        for (String fruit : arrayList) {
            System.out.println(fruit);
        }
    }
}
2.2 LinkedList

LinkedList 是基于双向链表实现的,插入和删除操作较快,随机访问较慢。

示例代码:

import java.util.LinkedList;
import java.util.List;

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

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

3. Set 接口及其实现类

Set 接口表示无序的集合,不允许重复元素。常见的实现类有 HashSetTreeSet

3.1 HashSet

HashSet 是基于哈希表实现的,插入、删除和查找操作效率高。

示例代码:

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

public class HashSetExample {
    public static void main(String[] args) {
        Set<String> hashSet = new HashSet<>();
        hashSet.add("Apple");
        hashSet.add("Banana");
        hashSet.add("Cherry");
        hashSet.add("Apple");  // 重复元素不会被添加

        for (String fruit : hashSet) {
            System.out.println(fruit);
        }
    }
}
3.2 TreeSet

TreeSet 是基于红黑树实现的,元素有序,插入、删除和查找操作效率较高。

示例代码:

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

public class TreeSetExample {
    public static void main(String[] args) {
        Set<String> treeSet = new TreeSet<>();
        treeSet.add("Apple");
        treeSet.add("Banana");
        treeSet.add("Cherry");
        treeSet.add("Apple");  // 重复元素不会被添加

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

4. Queue 接口及其实现类

Queue 接口表示队列,先进先出(FIFO)。常见的实现类有 LinkedListPriorityQueue

4.1 LinkedList

LinkedList 也可以作为队列使用,支持队列的基本操作。

示例代码:

import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        queue.offer("Alice");
        queue.offer("Bob");
        queue.offer("Charlie");

        while (!queue.isEmpty()) {
            System.out.println("Polled: " + queue.poll());
        }
    }
}
4.2 PriorityQueue

PriorityQueue 是基于优先级堆实现的,元素按优先级顺序出队。

示例代码:

import java.util.PriorityQueue;
import java.util.Queue;

public class PriorityQueueExample {
    public static void main(String[] args) {
        Queue<Integer> priorityQueue = new PriorityQueue<>();
        priorityQueue.offer(10);
        priorityQueue.offer(20);
        priorityQueue.offer(15);

        while (!priorityQueue.isEmpty()) {
            System.out.println("Polled: " + priorityQueue.poll());
        }
    }
}

5. Map 接口及其实现类

Map 接口表示键值对集合,每个键对应一个值。常见的实现类有 HashMapTreeMap

5.1 HashMap

HashMap 是基于哈希表实现的,插入、删除和查找操作效率高。

示例代码:

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

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

        for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
    }
}
5.2 TreeMap

TreeMap 是基于红黑树实现的,键有序,插入、删除和查找操作效率较高。

示例代码:

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

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

        for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
    }
}

总结

  • List:有序集合,允许重复元素。
    • ArrayList:基于动态数组。
    • LinkedList:基于双向链表。
  • Set:无序集合,不允许重复元素。
    • HashSet:基于哈希表。
    • TreeSet:基于红黑树。
  • Queue:队列,先进先出(FIFO)。
    • LinkedList:基于双向链表。
    • PriorityQueue:基于优先级堆。
  • Map:键值对集合,每个键对应一个值。
    • HashMap:基于哈希表。
    • TreeMap:基于红黑树。

通过以上详细的概念解释和编程示例,相信大家已经对Java中常见的集合类有了更深入的理解。在实际编程中,根据具体需求选择合适的集合类,可以提高程序的性能和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值