常用数据结构及其Java实现

2020-03-06  本文已影响0人  Muscleape

这玩意就是得温故而知新,时常看看琢磨琢磨
基于链接:https://segmentfault.com/a/1190000009797159

前言

首先给出Java集合框架的基本接口/类层次结构:

java.util.Collection [I]
    +--java.util.List [I]
       +--java.util.ArrayList [C]    
       +--java.util.LinkedList [C]  
       +--java.util.Vector [C]    //线程安全
          +--java.util.Stack [C]  //线程安全
    +--java.util.Set [I]                   
       +--java.util.HashSet [C]      
       +--java.util.SortedSet [I]    
          +--java.util.TreeSet [C]    
    +--Java.util.Queue[I]
        +--java.util.Deque[I]   
        +--java.util.PriorityQueue[C]  
java.util.Map [I]
    +--java.util.SortedMap [I]
       +--java.util.TreeMap [C]
    +--java.util.Hashtable [C]   //线程安全
    +--java.util.HashMap [C]
    +--java.util.LinkedHashMap [C]
    +--java.util.WeakHashMap [C]

[I]:接口
[C]:类
本图来源于网络。

数组

int[] ints1 = new int[10];
ints1[0] = 5;
int[] ints2 = new int[]{2,3,4,5};
int a = ints2[1];
int length = ints2.length;

链表

队列

Deque<Integer> integerDeque = new LinkedList<>();
// 尾部入队的两种方法,区别在于:
// 如果失败,add()会抛出IllegalStateException异常,而offer()返回false
integerDeque.offer(122);
integerDeque.add(122);

// 头部出队的两种方法(从队列中删除),区别在于:
// 如果失败,remove()抛出NoSuchElementException异常,而poll方法返回false
int head = integerDeque.poll(); // 返回并删除
head = integerDeque.remove();  // 返回并删除

// 头部出队的两种方法(不删除),区别在于:
// 如果失败,element()抛出NoSuchElementException异常,而peek()不会
head = integerDeque.peek();
head = integerDeque.element();

Deque<Integer> stack = new ArrayDeque<Integer>();
stack.push(12); // 尾部入栈
stack.push(16); // 尾部入栈
int tail = stack.pop(); // 尾部出栈,并删除元素
tail = stack.peek(); // 尾部出栈,不删除元素

集合

HashSet<Integer> integerHashSet = new HashSet<>();
integerHashSet.add(12121);//添加
integerHashSet.contains(121);//是否包含
integerHashSet.size();//集合大小
integerHashSet.isEmpty();//是否为空

散列表

https://www.cnblogs.com/skywang12345/p/3311092.html
WeakHashMap和HashMap一样,也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以是null

上一篇下一篇

猜你喜欢

热点阅读