JAVA 常用容器

本文介绍了JAVA中常见的几种数据容器,包括List、Stack、Queue和Set的接口及其实现类,如ArrayList和LinkedList、Stack、PriorityQueue和HashSet、TreeSet。还提到了Map接口及其典型实现HashMap和TreeMap,详细列举了各容器的主要方法和特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA 常用容器

Acwing Java语法基础笔记

1.List

接口:java.util.List<>

采用接口方式创建类的对象

List<Integer> l = new ArrayList<>(int initialCapacity);

List<Integer> l = new LinkedList<>(Collection<? extends E> c); 使用集合创建链表

实现:

  • java.util.ArrayList<>:变长数组(可直接访问下标的单链表)
  • java.util.LinkedList<>:双链表

常用函数:

  • add():在末尾添加一个元素
  • clear():清空
  • size():返回长度
  • isEmpty():是否为空
  • get(i):获取第i个元素(取值)
  • set(i, val):将第i个元素设置为val(修改)

List可直接输出

2 栈

类:java.util.Stack<>

创建栈Stack<对象名> 栈名 = new Stack<>()

栈是Vector的一个子类,它实现了一个标准的后进先出的栈。堆栈除了包括由Vector定义的所有函数,也定义了自己的一些函数。

函数:

  • push():压入元素
  • pop():弹出栈顶元素,并返回栈顶元素。(C++只弹出,不返回)
  • search():返回元素在堆栈中的位置,以1为基数
  • peek():返回栈顶元素
  • size():返回长度
  • empty():栈是否为空
  • clear():清空

Stack 也可直接输出

3.队列

接口:java.util.Queue<>

创建:

Queue<对象> l = new LinkedList<>();

Queue<对象> l = new PriorityQueue<>();小根堆

Queue<对象> l = new PriorityQueue<>(Collections.reverseOrder());大根堆

实现:

  • java.util.LinkedList<>:双链表
  • java.util.PriorityQueue<>:优先队列
    • 默认是小根堆,大根堆写法:new PriorityQueue<>(Collections.reverseOrder())(C++默认是大根堆)

函数:

  • add():在队尾添加元素
  • remove():删除并返回队头
  • isEmpty():是否为空
  • size():返回长度
  • peek():返回队头
  • clear():清空

4. Set

接口:java.util.Set<K>

实现:

  • java.util.HashSet<K>:哈希表。插入删除修改查找都是O(1)
  • java.util.TreeSet<K>:平衡树 (动态维护一个有序序列)。插入删除修改查询都是O(logn)级别。

函数:

  • add():添加元素
  • contains():是否包含某个元素
  • remove():删除元素
  • size():返回元素数
  • isEmpty():是否为空
  • clear():清空

java.util.TreeSet多的函数:

ceiling(key):返回大于等于key最小元素,不存在则返回null
floor(key):返回小于等于key最大元素,不存在则返回null

5. Map

接口:java.util.Map<K, V>

实现:

java.util.HashMap<K, V>:哈希表
java.util.TreeMap<K, V>:平衡树
函数:

  • put(key, value):添加关键字和其对应的值

  • get(key):返回关键字对应的值

  • containsKey(key):是否包含关键字

  • remove(key):删除关键字

  • size():返回元素数

  • isEmpty():是否为空

  • clear():清空

  • entrySet():获取Map中的所有对象的集合

  • Map.Entry<K, V>:Map中的对象类型

  • getKey():获取关键字

  • getValue():获取值

java.util.TreeMap<K, V>多的函数:

  • ceilingEntry(key):返回大于等于key的最小元素,不存在则返回null
  • floorEntry(key):返回小于等于key的最大元素,不存在则返回null

拓展

前四个容器遍历时都可以用增强for循环,map的遍历:

public class Main {
    public static void main(String[] args)
    {
        Map<Integer,String> m = new HashMap<>();
        m.put(1,"a");
        m.put(2,"b");
        m.put(3,"c");
        m.put(4,"d");
        for(Map.Entry<Integer,String> t:m.entrySet())
            System.out.println(t);
        /*输出
        1=a
        2=b
        3=c
        4=d
        */

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值