JAVA的容器

文章目录

  • List
    • [List 接口的特点](#List 接口的特点)
    • [List 接口的主要方法](#List 接口的主要方法)
    • [List 接口的实现类](#List 接口的实现类)
    • 示例
  • Map
    • [Map 接口的特点](#Map 接口的特点)
    • [Map 接口的主要方法](#Map 接口的主要方法)
    • [Map 接口的实现类](#Map 接口的实现类)
    • 示例
  • Queue
    • [Queue 接口的特点](#Queue 接口的特点)
    • [Queue 接口的主要方法](#Queue 接口的主要方法)
    • [Queue 接口的实现类](#Queue 接口的实现类)
    • 示例

List

List是Collections Framework 的一部分,用于表示一个有序集合,可以包含重复的元素。List 接口位于 java.util 包中,继承自 Collection 接口。List 接口提供了多种方法来操作集合中的元素,包括添加、删除、获取和更新等。

List 接口的特点

  • 有序性:List 中的元素按照一定的顺序排列,每个元素都有其对应的索引位置,索引从 0 开始。
  • 可重复性:List 中可以包含重复的元素,即同一个元素可以多次出现在 List 中。
  • 插入和访问:List 接口提供了基于索引的操作,可以快速地通过索引来访问、添加、修改和删除元素。

List 接口的主要方法

List 接口提供了一系列方法来操作集合:

  • add(E element): 在列表末尾添加一个元素。
  • add(int index, E element): 在列表的指定位置插入一个元素。
  • remove(int index): 移除列表中指定位置的元素。
  • remove(Object element): 移除列表中首次出现的指定元素。
  • get(int index): 返回列表中指定位置的元素。
  • set(int index, E element): 替换列表中指定位置的元素。
  • size(): 返回列表中的元素数量。
  • isEmpty(): 判断列表是否为空。
  • contains(Object element): 判断列表是否包含指定元素。
  • indexOf(Object element): 返回列表中首次出现的指定元素的索引,如果不存在则返回-1。
  • lastIndexOf(Object element): 返回列表中最后出现的指定元素的索引,如果不存在则返回-1。
  • subList(int fromIndex, int toIndex): 返回列表中从fromIndex到toIndex-1位置的子列表视图。
  • clear(): 移除列表中的所有元素。
  • toArray(): 将列表转换为数组。

List 接口的实现类

List 接口有多个实现类,其中最常用的是 ArrayList 和 LinkedList:

  • ArrayList:基于动态数组实现,提供了快速的随机访问性能,但在列表中间插入和删除元素较慢。
  • LinkedList:基于双向链表实现,提供了快速的插入和删除性能,特别是在列表的开始和结束位置,但在随机访问方面较慢。

示例

以下是如何在 Java 中使用 List 接口的一个简单示例:

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        // 创建一个 ArrayList 实例
        List<String> list = new ArrayList<>();

        // 添加元素
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        // 通过索引访问元素
        System.out.println("Index 1: " + list.get(1)); // 输出: Index 1: Banana

        // 修改元素
        list.set(1, "Grape");

        // 删除元素
        list.remove(0); // 移除索引为 0 的元素(Apple)

        // 遍历列表
        for (String fruit : list) {
            System.out.println(fruit);
        }
    }
}

Map

Map是一个接口,它用于存储键值对(key-value pairs)的集合。Map中的每个键都是唯一的,而值可以重复。Map接口提供了一系列方法来操作键值对,包括添加、删除、获取和更新等。

Map 接口的特点

  • 键的唯一性:Map中的每个键都映射到一个唯一的值。如果尝试插入一个已经存在的键,那么与该键关联的值将被更新。
  • 无序性:Map接口本身不保证键值对的顺序。如果需要顺序,可以使用SortedMap接口或LinkedHashMap类。
  • 键值对操作:Map提供了多种方法来操作键值对,如根据键获取值、添加键值对、删除键值对等。

Map 接口的主要方法

Map接口提供了一系列方法来操作键值对:

  • put(K key, V value): 添加或更新键值对。
  • get(Object key): 根据键获取对应的值,如果键不存在则返回null。
  • remove(Object key): 移除键值对,并返回与键关联的值,如果键不存在则返回null。
  • containsKey(Object key): 判断是否包含指定的键。
  • containsValue(Object value): 判断是否包含指定的值。
  • size(): 返回Map中的键值对数量。
  • isEmpty(): 判断Map是否为空。
  • clear(): 移除所有键值对。
  • keySet(): 返回Map中所有键的集合视图。
  • values(): 返回Map中所有值的集合视图。
  • entrySet(): 返回Map中所有键值对的集合视图。

Map 接口的实现类

Map接口有多个实现类,其中最常用的是HashMap、TreeMap和LinkedHashMap:

  • HashMap:基于哈希表实现,提供了快速的键值对操作性能。它不保证顺序,并且允许使用null作为键和值。
  • TreeMap:基于红黑树实现,是一个有序的Map实现,根据键的自然顺序或自定义比较器进行排序。
  • LinkedHashMap:继承自HashMap,它维护了一个双向链表,用于维护键值对的插入顺序。

示例

以下是如何在Java中使用Map接口的一个简单示例:

java 复制代码
import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        // 创建一个HashMap实例
        Map<String, Integer> map = new HashMap<>();

        // 添加键值对
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Cherry", 3);

        // 根据键获取值
        System.out.println("Banana: " + map.get("Banana")); // 输出: Banana: 2

        // 判断是否包含键
        System.out.println("Contains Apple: " + map.containsKey("Apple")); // 输出: Contains Apple: true

        // 删除键值对
        map.remove("Apple");

        // 遍历Map
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

Queue

Queue是一个接口,它继承自Collection接口,用于模拟队列数据结构。队列是一种先进先出(FIFO)的数据结构,即元素按照它们被添加的顺序被移除。Queue接口提供了一系列方法来操作队列,包括添加、删除、检查等。

Queue 接口的特点

  • 先进先出:队列中的元素按照它们被添加的顺序被移除。队列的头部是队列中存在时间最长的元素,而尾部是队列中存在时间最短的元素。
  • 可选操作:Queue接口允许某些操作,如插入、删除和检查,可能会抛出异常,也允许这些操作返回特殊值(如null或false)而不抛出异常。

Queue 接口的主要方法

Queue接口提供了一系列方法来操作队列:

  • add(E element): 添加一个元素到队列的尾部,如果队列已满,则抛出IllegalStateException。
  • offer(E element): 添加一个元素到队列的尾部,如果队列已满,则返回false。
  • remove(): 移除并返回队列头部的元素,如果队列为空,则抛出NoSuchElementException。
  • poll(): 移除并返回队列头部的元素,如果队列为空,则返回null。
  • element(): 返回队列头部的元素,但不移除,如果队列为空,则抛出NoSuchElementException。
  • peek(): 返回队列头部的元素,但不移除,如果队列为空,则返回null。
  • size(): 返回队列中的元素数量。
  • isEmpty(): 判断队列是否为空。
  • contains(Object element): 判断队列是否包含指定的元素。

Queue 接口的实现类

Queue接口有多个实现类,其中最常用的是LinkedList和PriorityQueue:

  • LinkedList:基于链表实现,可以作为队列或双端队列使用。
  • PriorityQueue:基于优先级堆实现,是一个无界优先队列,元素根据其自然顺序或者自定义比较器进行排序。

示例

以下是如何在Java中使用Queue接口的一个简单示例:

java 复制代码
import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        // 创建一个 LinkedList 实例作为 Queue
        Queue<String> queue = new LinkedList<>();

        // 添加元素到队列
        queue.add("Apple");
        queue.offer("Banana");
        queue.offer("Cherry");

        // 移除并返回队列头部的元素
        System.out.println("Removed: " + queue.remove()); // 输出: Removed: Apple
        System.out.println("Peeked: " + queue.peek()); // 输出: Peeked: Banana

        // 遍历队列
        while (!queue.isEmpty()) {
            System.out.println(queue.poll());
        }
    }
}
相关推荐
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck2 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei2 小时前
java的类加载机制的学习
java·学习
Yaml44 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~4 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616884 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
aloha_7894 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
hairenjing11234 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
记录成长java5 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
睡觉谁叫~~~5 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust