//初始化一个key为int,value为int的哈希表
unordered_map<int,int> mapping;
//初始化一个key为string,value为int数组的哈希表
unordered_map<string,vector<int>> mapping ;
vector<int> nums{1,1,3,4,5,3,6};
unordered_map<int,int> counter;
for(int num:nuns){
counter[num]++;
}
for(auto& it:counter){
int key=it.first;
int val=it.second;
count<<key<<":"<<val<<endl;
}
unordered_set<string> visited;
//返回哈希表的键值对个数
size_type size();
//向集合插入一个元素key
pair<iterator,bool> insert(const key_type& key);
5.对列queue
//初始化一个存储int的对列
queue<int> q;
//初始化一个存储string的对列
queue<string> q;
//返回队列是否为空
bool empty();
//返回队列中元素的个数
size_type size();
//将元素加入队尾
void push(const value_type& val);
//返回队头元素的引用
value_type& front();
//删除队头元素
void pop();
6.堆栈stack
初始化方法
//初始化一个存储int的堆栈
stack<int> stk;
//初始化一个存储string的堆栈
stack<string> stk;
//返回堆栈是否为空
bool empty();
//返回堆栈中元素的个数
size_type size();
//在栈顶添加元素
void push(const value_type& val);
//返回栈顶元素的引用
vcalue_type& top();
//删除栈顶元素
void pop();
Java
1.数组
初始化方法
int m=5,n=10;
//初始化一个大小为10的int数组,默认值为0
int[] nums=new int[n];
//初始化一个m*n的二位bool数组
boolean[][]visited=new boolean[m][n];
用索引下标访问其中的元素
if(nums.length==0){
return 0;
}
for(int i=0;i<nums.length;i++){
//访问nums[i]
}
2.字符串String
Java处理字符串比较麻烦,因为它不支持用[]直接访问其中的字符,而且不能直接修改,要转化成char[]类型之后才能修改
String s1="hello world";
//获取s1[2]中的字符
char c=s1.charAt(2);
char[] chars=s1.toCharArray();
char[1]='a';
String s2=new String(chars);
System.out.println(s2);
//用equals方法判断字符串是否相同
if(s1.equals(s2)){
//s1和s2相同
}else{
//s1和s2不同
}
//字符串拼接
String s3=s1+"!";
//输出hello world
System.out.println(s3);
Java的字符串不能直接修改,要用toCharArray转换成char[]类型的数组后进行修改然后转换回String类型
虽然字符串支持+进行拼接,但是效率不高,不建议在for循环中使用。如果需要频繁拼接,使用StringBuilder
StringBuilder sb=new StringBuilder();
for(char c='a';c<'f';c++){
sb.append(c);
}
//append直出拼接字符,字符串,数字
sb.append('g').append("hij").append(123)
String res=sb.toString();
//输出abcdefghij123
System.out.println(res);
3.动态数组ArrayList
//初始化一个存储String的动态数组
ArrayList<String> nums=new ArrayList<>
//判断数组是否为空
boolean isEmpty()
//返回数组中元素个数
int size();
//返回索引index的元素
E get(int index)
//在数组微博添加元素e
Boolean add(ElemType e)
4.双链表LinkedList
底层用数组实现,而LinkedList底层使用双链表实现的
//初始化一个存储int类型数据的双链表
LinkedList<Integer> nums=new LinkedList<>();
//初始化一个存储String类型数据的双链表
LinkedList<String> strings = new LinkedList<>();
//判断链表是否为空
boolean isEmpty()
//返回链表中元素的个数
int size()
LinkedList更多实用头部和尾部元素的操作,因为底层数据结构为链表,所以直接操作头尾部元素效率高
5.哈希表HashMap
初始化
//整数映射道字符串的哈希表
HashMap<Integer, String> map = new HashMap<>();
//字符串映射到数组的哈希表
HashMap<String,int[]> map = new HashMap<>();
//判断哈希表中是否存在key
boolean containsKey(Object key)
//获得键key对应的值,若key不存在则返回null
ValueType get(Object key)
//将key和value键值对存入哈希表
ValueType put(KeyValue key,ValueType value)
//如果key存在,删除key并返回对应的值
ValueType remove(Object key)
6.哈希集合HashSet
初始化方法
//新建存储一个String类型的哈希集合
Set<String> set=new HashSet<>();
//如果e不存在就会添加到哈希集合
boolean add(ElemType e)
//判断元素o是否存在于哈希集合
boolean contains(Object o)
//如果元素o存在则删除元素
boolean remove(Object o)
7.队列Queue
与之前的数据结构不同,Queue是一个接口Interface,因此它的初始化方法比较特别
//新建一个存储String的对列
Queue<String> q=new LinkedList<>();
//判断队列是否为空
boolean isEmpty();
//返回队列中元素的个数
int size();
//返回队头的元素
ElemType peek();
//删除并返回队头的元素
ElemType poll();
//将元素e掺入队尾
boolean offer(ElemType e);
8.堆栈
初始化方法:
Stack<Integer> s=new Stack<>();
//判断堆栈是否为空
boolean isEmpty();
//返回堆栈中元素是的个数
int size();
//将元素压入栈顶
ElemType push(ElemType item)
//返回栈顶元素
ElemType peek()
//删除并返回栈顶元素
ElemType pop()