栈队列等辅助知识
头文件 java.util.*;
一:列表List:
有两种 ArrayList和 linkedlist。
ArrayList:随机访问元素快,插入和删除元素比较慢
LinkedList:插入和删除元素快,随机访问元素比较慢。加入了一些方法,可做栈、队列、双端队列!
List<Integer> list=new ArrayList<Integer>();
二、集合Set(无相同元素):
Set<Integer> set = new HashSet<Integer>();
set.add(); //添加元素 添加重复的还会返回False
set.remove(); //移除元素
三、栈Stack(后进先出):
Deque<Integer> Stack = new LinkedList<Integer>();
Stack.push(root); // add=addLast压到最后,也就是栈顶 push=addfirst压到最前,也就是栈底 例如已有5,再push入6,从底向上为6,5
root=stack.poll(); // poll=pop 弹出栈底的 例如已有5,再push入6,从底向上为6,5,pop会弹出6
因此如果想要实现后进先出,必须得压入用push,弹出用pop。然后可以直接看做正常的栈。
peek不移除元素的同时提供栈顶元素,pop移除并返回栈顶元素。
push入栈,在栈顶。
四、队列Queue(先进先出):
Queue<Integer> queue = new LinkedList<Integer>();
queue.offer(elelment); //将一个元素插入到队尾 例如已有1,再offer入2,从底向上为1,2
int a = queue.peek(); //peek和element都将在不移除的的情况下返回队头。但peek为空时返回null,element为空时抛出异常。
int b = queue.remove(); //remove和poll都将移除一个元素并返回队头。但pool为空时返回null,remove为空时抛出异常。
五、字典Map:(键值对)
Map<Integer, Integer> map=new HashMap<Integer, Integer>();
map.containsKey(key); contains字典是否包含键key
map.replace(key, map.get(key)+1); replace 替换,返回旧的val
get 得到key对应的value
map.put(key,value); 放入新的键值对
for(int i:map.keySet()) {} 对于key集合中的每个key做循环
https://blog.csdn.net/songfeihu0810232/article/details/80156626
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决