Loading... ## 各个容器类的关系 ![概览](https://s1.ax1x.com/2020/06/17/NEzLB6.png) ---------- ## 使用指南 ### Queue 单端队列数据结构(先进先出),链式储存。 ```java Queue<String> a = new LinkedList<String >(); // 队列尾部添加元素 a.offer("one"); a.offer("two"); // 队列前端删除元素 a.poll(); ``` ### Deque 双端队列数据结构(可以两端添加和删除元素),链式储存。 ```java Deque<String> a = new LinkedList<String >(); // 队尾添加元素 a.offer("one"); a.offer("two"); // 队前添加元素 a.offerFirst("three"); // 队尾删除元素 a.pollLast(); ``` ### Stack 栈数据结构,先进先出。有两种实现方法。它们略有不同。但都能实现先进先出。 ##### 1. 链式栈 名义上使用Deque接口,实际使用pop和push方法。 ```java Deque<String> a = new LinkedList<String >(); a.push("1"); a.push("2"); a.push("3"); a.push("4"); a.pop(); System.out.println(a.toString()); // 返回 [3,2,1] ``` ##### 2. 顺序栈 ```java Stack<String> a = new Stack<String>(); a.push("1"); a.push("2"); a.push("3"); a.push("4"); a.pop(); System.out.println(a.toString()); // 返回 [1,2,3] ``` ### 顺序列表 简单的线性序列容器。顺序储存。 ##### 1. ArrayList<T> ```java ArrayList<String> a = new ArrayList<String>(); a.add("1"); a.add("2"); a.add("3"); a.add("4"); a.remove(0); ``` ##### 2. Vector<T> Vector<T>和ArrayList<T>几乎是一样的,不同之处在于Vector<T>是线程安全的。 ### Set 无序集合容器,特点是可以快速判断集合中是否存在某个元素。还可以快速删除已知值的元素。 它有两种实现方法。 ##### 1. HashSet<T> 底层是散列表(哈希算法)数据结构 ```java Set<String> a = new HashSet<String>(); a.add("1"); a.add("2"); a.add("3"); // 删除某元素 a.remove("2"); System.out.println(a.contains("2")); ``` ##### 2. TreeSet<T> 底层是平衡二叉树数据结构。如果使用Set接口则于HashSet用法完全一致。只是底层实现不一样而已。 ```java Set<String> a = new TreeSet<String>(); ``` ### Map 一种关联容器接口,有每一个键(key)都有唯一对应的值(value)。它有两种底层实现。 ##### 1. HashMap<T> 底层为散列表数据结构。 ```java Map<Integer, String> a = new HashMap<Integer, String>(); a.put(1, "a"); a.put(2, "b"); a.put(33, "c"); a.put(4, "d"); for( Integer key : a.keySet()){ System.out.println(key.toString() + ":" + a.get(key)); } // 返回 1:a 33:c 2:b 4:d ``` ##### 2. TreeMap<T> 底层为红黑树数据结构。 ```java Map<Integer, String> a = new TreeMap<Integer, String>(); a.put(1,"a"); a.put(2, "b"); a.put(33, "c"); a.put(4, "d"); for( Integer key : a.keySet()){ System.out.println(key.toString() + ":" + a.get(key)); } // 返回 1:a 2:b 4:d 33:c ``` ---------- ## 参考文章 https://juejin.im/post/5cac034fe51d456e425dd964 最后修改:2020 年 06 月 17 日 08 : 30 PM © 允许规范转载