数据结构与算法

144 阅读1分钟

先补一下基础:位运算 blog.csdn.net/pcwl1206/ar… 这对后面理解数据结构和底层算法原理有帮助。

1,LinkedList

zhuanlan.zhihu.com/p/144597359

2,


PriorityQueue  extends AbstractQueue<E>(extends AbstractCollection<E>(implements Collection<E>) implements Queue<E>)
 	transient Object[] queue;
	int size;
    private final Comparator<? super E> comparator;
	transient int modCount;

	add(E e) = offer(E e)
	peek() 返回 (E) queue[0]


ArrayList extends AbstractList<E> implements List<E>
	transient Object[] elementData;
	private static final int DEFAULT_CAPACITY = 10;
	private int size;

//对于链表中的指针,其实就是java中的对象引用。
LinkedList extends AbstractSequentialList(extends AbstractList) implements List,Deque
	transient int size = 0;
	transient Node<E> first;
	transient Node<E> last;
	private static class Node<E> {
    	E item;
    	Node<E> next;
    	Node<E> prev;

    	Node(Node<E> prev, E element, Node<E> next) {
    	    this.item = element;
    	    this.next = next;
    	    this.prev = prev;
    	}
	}

Stack  extends Vector<E>   后进先出。
	push(E item) 添加一个元素
	peek(E item) 返回栈内最上层一个元素(返回最后添加的元素)
	pop(E item) 弹出一个元素 方法里有peek(E)和removeElementAt(总长度-1) 【removeElementAt中有System.arraycopy(elementData, index + 1, elementData, index, j)】

Vector  extends AbstractList<E> implements List<E>
	protected Object[] elementData;
	protected int elementCount;
	protected int capacityIncrement;

Deque 是一个接口,extends Queue(Queue也是接口) (Queue extends Collection)

ArrayDeque implements Deque<E> extends AbstractQueue<E>
	transient Object[] elements;
	transient int head;
	transient int tail; //tail : 尾;尾部
	add(E) = addLast(E) 		 在数组后面添加元素
	offer(E) = offerLast(E) = [addLast(E) + return true] 
	poll() = pollFirst() 	删除第一个元素,并返回删除元素的值,如果元素为null,将返回null
	remove() = removeFirst() = pollFirst() + 如果没有则抛出异常
	peek() = peekFirst() 获取第一个元素,如果没有返回null
	element() = getFirst() 获取第一个元素,如果没有将抛出异常
	
	下面两个是栈操作,LinkedList也有栈操作,所以有什么总结呢?
	push(E) = addFirst(E) 栈顶添加一个元素
	pop() = removeFirst()