• AC笔记 | 领扣Java容器脚手架


    Collection

    Java中的集合主要分为四类:

    1. List列表:有序的,可重复的;
    2. Queue队列:有序,可重复的;
    3. Stack栈:有序,可重复;
    4. Set集合:不可重复;
    5. Map映射:无序,键唯一,值不唯一。

    总结

    List:ArrayList和LinkedList

    Queue:LinkedList

    Stack:LinkedList

    Map:HashMap

    Set:HashSet

    List

    ArrayList

    1.添加元素

    list.add(E);	// 在列表的末尾添加元素E
    
    • 1

    2.删除元素

    list.remove(index); 	// 删除位置为index的元素,后面每个元素的index减1。也就是之后每个元素向前挪一位
    
    • 1

    3.修改元素

    list.add(index,E);	// 在指定的位置index添加元素E,如果index大于列表的容量,就会抛出异常
    
    • 1

    4.查找元素

    for (Integer num : list) {
        System.out.print(num+",");
    }
    
    for (int i = 0; i < list.size(); i++) {
        System.out.print(list.get(i)+",");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    LinkedList

    List<Integer> list = new LinkedList<>();
    
    • 1

    1.添加元素

    list.add(E);	// 在队列末尾添加元素
    list.add(index,E);	//在index位置插入元素,之后每一个元素的index都加1
    list.add(0,0);	//在队首添加元素0
    
    • 1
    • 2
    • 3

    2.删除元素

    list.remove(index);		// 删除位置是index的元素
    
    • 1

    3.修改元素

    list.set(index,E);	// 
    
    • 1

    4.查找元素

    E e = list.get(index);
    for (int i = 0; i < list.size(); i++) {
        System.out.print(list.get(i)+",");
    }
    
    • 1
    • 2
    • 3
    • 4

    Queue

    队列是一个先进先出的集合

    LinkedList

    使用 LinkedList 实现队列

    Queue<Integer> queue = new LinkedList<>();
    
    • 1

    1.元素加入队尾

    queue.offer(1);
    
    • 1

    如果使用 LinkedList 来实现,offer(E) 底层也就是 add(E) ,而 add(E) 则是插入在链表的尾部。

    如果队列的容量是受限的,那么则会抛出异常。

    2.取出队首元素

    Integer num = queue.poll();
    
    • 1

    如果队列非空,队首元素出队列,返回队首元素;如果队列是空,返回null

    3.返回队首元素

    Integer num = queue.peek();
    
    • 1

    poll() 相比,peek() 不删除队首元素,直接返回队首元素

    4.删除队首元素

    queue.remove();
    
    • 1

    poll() 相比,remove() 当队列是空的时候,抛出异常

    PriorityQueue

    Stack

    栈主要是一个后进先出的动作,也就是说,添加还是在队列末尾,取数据也是在队列末尾

    Deque

    如果使用 LinkedList 也是可以实现的,主要还是 Deque

    Deque<Integer> stack = new LinkedList<>();
    
    • 1

    入栈

    stack.offerLast(1);
    
    • 1

    出栈

    stack.pollLast();
    
    • 1

    取栈顶元素

    stack.peekLast()
    
    • 1

    Map

    存储键值对

    HashMap

    Map<Integer,Integer> map = new HashMap<>();
    
    • 1

    1.添加元素

    map.put(K, V);	// 添加元素
    map.put(1, 2);
    
    • 1
    • 2

    2.删除元素

    map.remove(K);	// 删除key为K的键值对
    map.remove(1);
    
    • 1
    • 2

    3.修改元素

    map.put(K, newValue);	// 修改key为K的值
    map.put(1, 6);
    
    • 1
    • 2

    4.查找元素

    for(Integer key : map.keySet()) {
        System.out.println("("+key+","+map.get(key)+")");
    }
    
    • 1
    • 2
    • 3

    Set

    没有重复元素

    HashSet

    Set<Integer> set = new HashSet<>();
    
    • 1

    1.增加元素

     set.add(E);
     set.add(1);	// 添加两个一样的元素仅仅添加1个
     set.add(1);
    
    • 1
    • 2
    • 3

    2.删除元素

    set.remove(E);
    set.remove(1);
    
    • 1
    • 2

    3.查找元素

    boolean isInSet = set.contains(2);
    for (Integer num : set) {
        System.out.print(num+",");
    }
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    React源码分析(二)渲染机制
    浅谈压力测试的作用是什么
    直流电机双闭环调速Simulink仿真
    从0开始python学习-29.selenium 通过cookie信息进行登录
    python类对象
    盘点那些具有特色的写作软件
    [配置参数列表] Splunk UBA confuba-site.properties
    CMSC5707-高级人工智能之语音识别
    小程序 scroll-view 性能问题
    【软件设计师21天-考点整理】5)计算机系统构成及硬件基础知识
  • 原文地址:https://blog.csdn.net/xt199711/article/details/126214466