1.map,TreeMap(底层红黑树,保证key有序排列)
C++
//定义一个mp
map<int,int> mp;
//设定一个键值对(1,2)
mp[1]=2;
//查询是key 1是否存在
if(mp.count(1)==0)
//遍历mp
for(auto x:mp)
{
//打印key value对
cout<<x.first<<" "<<x.second<<endl;
}
//移除key 1
mp.erase(1)
//mp的大小
mp.size()
Java
//定义一个mp
TreeMap<Integer,Integer> mp=new TreeMap<>();
//设定一个值(1,2)
mp.put(1,2);
//推荐写法 查询是否有key1,没有则给一个初始值0,再加2得到最终value
mp.put(1,mp.getOrDefault(1,0)+2);
//查询是key 1是否存在
if(mp.containsKey(1))
//遍历mp
for(Map.Entry<Integer,Integer> x:mp.entrySet())
{
//打印key value对
System.out.println(x.getKey()+" "+x.getValue());
}
//移除key 1
mp.remove(1)
//mp的大小
mp.size()
1.unordered_map,HashMap
C++
//定义一个mp
unordered_map<int,int> mp;
//设定一个键值对(1,2)
mp[1]=2;
//查询是key 1是否存在
if(mp.count(1)==0)
//遍历mp
for(auto x:mp)
{
//打印key value对
cout<<x.first<<" "<<x.second<<endl;
}
//移除key 1
mp.erase(1)
//mp的大小
mp.size()
Java
//定义一个mp
HashMap<Integer,Integer> mp=new HashMap<>();
//设定一个值(1,2)
mp.put(1,2);
//查询是key 1是否存在
if(mp.containsKey(1))
//遍历mp
for(Map.Entry<Integer,Integer> x:mp.entrySet())
{
//打印key value对
System.out.println(x.getKey()+" "+x.getValue());
}
//移除key 1
mp.remove(1)
//mp的大小
mp.size()
Go
//定义一个mp
// 方式一
var mp map[int]int
mp = make(map[int]int)
//方式二
//mp := make(map[int]int)
//设定一个键值对(1,2)
mp[1] = 2
//查询是key 1是否存在
if _, ok := mp[1]; ok {
//...
} else {
//
}
//遍历mp
for key, value := range mp {
//打印key value对
fmt.Println(key, value)
}
//移除key 1
delete(mp, 1)
//mp的大小
fmt.Println(len(mp))
1.queue,Queue
C++
//定义队列
queue<int> q;
// 元素入队
q.push(10);
// 查看队列头部元素
int frontElement = q.front();
// 元素出队
q.pop();
// 获取队列大小
int queueSize = q.size();
// 判空检查
bool isEmpty = q.empty();
Java队列方法比较
1.添加元素:
boolean add(E element): 将指定的元素添加到队列的末尾,如果成功则返回true,如果队列已满则抛出异常。
boolean offer(E element): 将指定的元素添加到队列的末尾,如果成功则返回true,如果队列已满则返回false。
2.移除元素:
remove(): 移除并返回队列头部的元素,如果队列为空则抛出异常。
poll(): 移除并返回队列头部的元素,如果队列为空则返回null。
3.获取头部元素:
element(): 获取队列头部的元素,但不移除它,如果队列为空则抛出异常。
peek(): 获取队列头部的元素,但不移除它,如果队列为空则返回null。
Java
//定义队列
Queue<Integer> q=new LinkedList<>();
//元素入队
q.offer(10);
//查看队列头元素
q.peek();
//取出队列头元素
int frontElement = q.poll();
// 获取队列大小
int queueSize = q.size();
// 判空检查
boolean isEmpty=q.isEmpty();
1.deque,Deque
C++
//定义一个双端队列
deque<int> q;
// 元素从头部入队
q.push_front(10);
// 元素从尾部入队
q.push_back(20);
// 获取队列头部元素
int frontElement = q.front();
// 获取队列尾部元素
int backElement = q.back();
// 元素从头部出队
q.pop_front();
// 元素从尾部出队
q.pop_back();
// 获取队列大小
int queueSize = q.size();
// 判空检查
bool isEmpty = q.empty();
Java
//定义一个双端队列
Deque<Integer> q=new ArrayDeque<>();
// 元素从头部入队
q.addFirst(10);
// 元素从尾部入队
q.addLast(20);
// 获取队列头部元素
int frontElement = q.getFirst();
// 获取队列尾部元素
int backElement = q.getLast();
// 元素从头部出队
q.removeFirst();
// 元素从尾部出队
q.removeLast();
// 获取队列大小
int queueSize = q.size();
// 判空检查
boolean isEmpty = q.isEmpty();
3.stack,Stack
C++
stack<int> stk;
stk.push(10);
//查看队列头元素
stk.top();
//取出队列头元素
int frontElement = stk.pop();
int queueSize = stk.size();
boolean isEmpty=stk.empty();
Java
Stack<Integer> stk = new Stack<>();
stk.push(10);
//查看队列头元素
stk.peek();
//取出队列头元素
int frontElement = stk.pop();
int queueSize = stk.size();
boolean isEmpty=stk.isEmpty();
文章评论