java 常见数据结构

本贴最后更新于 1561 天前,其中的信息可能已经斗转星移

一、java中常见数据结构

1、LinkedList 双向链表

image.png

特点:

1. 物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,
每个元素包含三个节点,一个是存储元素的数据域(data),一个是指向前一个节点的指针域(prev),
一个是指向后一个节点的指针域(next)。根据指针的指向,链表形成不同的结构,例如单链表、双链表,循环链表。
2. 链表优点:不需要初始化容量,可以任意加减元素,添加或删除元素只需要改变前后两个元素节点的指针域指向地址即可,
所以添加,删除很快。
3. 缺点:含有大量指针域,占用空间大,需要查找元素需要遍历链表来查找,比较耗时。
4. 使用场景:数据量小,需要频繁增加,删除的操作。

代码:

addFirst:
LinkedList linked = new LinkedList();
linked.addFirst(1);
linked.addFirst(2);
linked.addFirst(3);
linked.addFirst(4);
System.out.println(linked);
addLast:
LinkedList linked = new LinkedList();
linked.addLast(1);
linked.addLast(2);
linked.addLast(3);
linked.addLast(4);
System.out.println(linked);
get:
System.out.println(linked.get(2));
remove:
linked.remove(2);
System.out.println(linked);
2、数组

image.png

特点:

1. 在内存中申请一块连续的空间。
2. 数组下标从 0 开始。
3. 数组的类型只能是一个,且固定,在申明时确定。
4. 数组的长度一经确定,无法改变,即定长。要改变长度,只能重新申明一个。

代码:

int[] arr = {11,22,33,101,200};
设置值:
arr[0] = 99;
获取值:
System.out.println(arr[1]);
3、Stack

image.png

特点:

1. 栈是一种线性存储结构。
2. 栈中数据是按照”后进先出(LIFO, Last In First Out)”方式进出栈的。
3. 向栈中添加/删除数据时,只能从栈顶进行操作。

代码:

Stack stack = new Stack();
push:向栈中添加元素(入栈)
stack.push("a");
stack.push("b");
stack.push("c");
stack.push("d");
System.out.println(stack);
pop:返回并删除栈顶元素(出栈)
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack);
4、ArrayBlockingQueue 阻塞队列

image.png

特点:

1. 队列是一种特殊的线性表。
2. 其插入操作只能在表的尾部进行,叫入队,这一端被称为队尾,删除操作只能在表的头部进行,
叫出队,这一端被称为队首,没有数据元素的队列称为空队列。
3. 队列具有FIFO(先进先出)的特点。

代码:

ArrayBlockingQueue queue = new ArrayBlockingQueue(5);
put:入队
queue.put("1");
queue.put("2");
queue.put("3");
queue.put("4");
queue.put("5");
System.out.println(queue);
poll:出队
queue.poll();
System.out.println(queue);
queue.put("1");
System.out.println(queue);
1 操作
luojie 在 2020-08-06 17:24:20 更新了该帖
回帖
请输入回帖内容 ...