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();