• java类比C++的STL库


    介绍了类比C++STL库中java的操作和常见数据结构的写法
    参考了他人的
    java的详情可以参考剑指Offe专项突破版那本书 里面有关Java数据结构和常见的介绍用法
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    常见容器操作

    1.vector 和 ArrayList

    vector<int> a; - ArrayList<Integer> a = new ArrayList<>();
    size() - size()  // 返回元素个数
    empty() - isEmpty()  // 返回是否为空
    clear() - clear  // 清空
    front()/back() - get(0)/get(a.size() - 1)
    push_back()/pop_back() - add()/remove(a.size() - 1)
    begin()/end() - iterator()
    [] - get()
    支持比较运算 - 不支持比较运算
    
    ArrayList 的遍历:
    for (int i = 0; i < a.size(); i++) a.get(i);
    
    Iterator<Integer> iterator = list.iterator();
    while (iterator.hasNext()) iterator.next()
    
    for (int num : a) num;
    
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    2.pair 和 Pair(Java 需要 import javafx.util.Pair ,目前 acwing 不支持)

    pair<int, int> p = make_pair(1, 2); - Pair<Integer, Integer> p = new Pair<>(1, 2); 
    first - getKey() // 第一个元素
    second - getValue() // 第二个元素
    支持比较运算 - 不支持比较运算
    
    • 1
    • 2
    • 3
    • 4

    3.string 和 String

    string a = "yxc"; - String b = "hqh";
    size()/length() - length()  // 返回字符串长度
    empty()
    clear()
    substr(起始下标,(子串长度)) - substring(起始下标,(终止下标 + 1)) // 返回子串
    c_str()  // 返回字符串所在字符数组的起始地址
    支持加法运算 - 支持加法运算
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.queue, stack, deque 和 Deque (有两个实现类,一般使用 ArrayDeque)

    queue, 队列
       size() - size()
       empty() - isEmpty()
       push() - offer()  // 向队尾插入一个元素
       front() - peek()  // 返回队头元素
       back()  // 返回队尾元素
       pop() - poll()  // 弹出队头元素
    
    
    stack,size() - size()
       empty() - isEmpty()
       push() - push()  // 向栈顶插入一个元素
       top() - peek()  // 返回栈顶元素
       pop() - pop()  // 弹出栈顶元素
    
    deque, 双端队列
       size() - size()
       empty() - isEmpty()
       clear() - clear()
       front()/back() - getFirst()/getLast()
       push_back()/pop_back() - offerLast()/pollLast()
       push_front()/pop_front() - offerFirst()/pollFirst()
       begin()/end() - iterator()
       []
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    5.priority_queue 和 PriorityQueue

    默认是大根堆 - 默认是小根堆
    push() - offer()  // 插入一个元素
    top() - peek()  // 返回堆顶元素
    pop() - poll() // 弹出堆顶元素
    
    PriorityQueue 定义成大根堆的方式:
    PriorityQueue<Integer> pq = new PriorityQueue<>((o1, o2) -> o2 - o1);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    6.unordered_set 和 HashSet

    size() - size()
    empty() - isEmpty()
    clear() - clear()
    insert() - add  // 插入一个数
    find() - contains()  // 查找一个数
    erase() - remove() // 删除元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    7.unordered_map 和 HashMap

    size() - size()
    empty() - isEmpty()
    clear() - clear()
    insert() - put() // 插入的数是一个 pair
    find() - get(key) // 查找一个 pair
    erase() - remove() // 删除元素
        - containsKey(key)/containsValue(value) // 判断元素是否在集合中
        - entrySet() // 返回一个包含所有节点的集合
        - keySet() // 返回一个包含所有键的集合
        - values() // 返回一个包含所有值的集合
        - getOrDefault(key, default value) // 返回指定 key 的 value,若 key 不存在 则返回 default value
        - putIfAbsent(key, value) // 如果集合中没有该 key 对应的节点,则插入
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    公钥密码学中的公钥和私钥
    任务流之间的调度依赖
    vmstat-内存性能分析常用命令
    bugku web篇(二)
    Unity WIFI 无线打包至手机
    syntax error near unexpected token `(‘
    【php经典算法】冒泡排序,冒泡排序原理,冒泡排序执行逻辑,执行过程,执行结果 代码
    2023年【制冷与空调设备运行操作】考试资料及制冷与空调设备运行操作考试试卷
    水果店的水果如何降低损耗,水果店损耗高怎么办
    Python 06 之面向对象基础
  • 原文地址:https://blog.csdn.net/qq_41810415/article/details/126544902