Leetcode---0.语言基础
1.数组
初始化:
int m=5,n=10;
// 初始化一个大小为10的int数组,其中的值默认初始化为0
int[] nums = new int[n];
// 初始化一个m*n的二维布尔数组
// 其中的元素默认初始化为false
boolean[][] visited = new boolean[m][n];
// 用索引下标访问其中的元素:
if(nums.lengh==0){
return;
}
for(int i=0; i<nums.length; i++){
// 访问nums[i]
}
2.字符串String
字符串不支持用[]直接访问字符,而且不能直接修改,要用toCharArray转化成char[]类型才能修改,然后转换回String类型。
String s1="hello world";
// 获取s1[2]中的字符
char c = s1.charAt(2);
char[] chars = s1.toCharArray();
char[1] = 'a';
String s2 = new String(chars);
// 输出:hallo world
System.out.println(s2)
// 注意,一定要用equals方法判断字符串是否相同
String s1 = "a";
String s2 = "b";
if(s1.equals(s2)) {
// s1和s2相同
} else {
// s1和s2不相同
}
//字符串可以用加号进行拼接
String s3 = s1 + "!";
// 输出:hello world!
System.out.println(s3);
另外,虽然字符串支持用+进行拼接,但是效率并不高,不建议在for循环中使用。需要进行频繁的字符串拼接,推荐使用StringBuilder;
StringBuilder sb = new StringBuilder();
for (char c = 'a'; c <= 'f'; c++) {
sb.append(c);
}
// append方法支持拼接字符、字符串、数字等类型
sb.append('g').append("hhh").append(123);
String res = sb.toString();
// 输出abcdefghhh123
System.out.println(res);
3.动态数组ArrayList
初始化方法:
// 初始化一个存储String类型数据的动态数组
ArrayList<String> strings = new ArrayList<>();
// 初始化一个存储Integer类型数据的动态数组
ArrayList<Integer> nums = new ArrayList<>();
// 常用方法(E代表元素类型)
boolean isEmpty(): 判断数组是否为空
int size():返回数组中元素的个数
E get(int index):返回索引index的元素
boolean add(E e):在数组尾部添加元素e
4.双链表LinkedList
ArrayList列表底层是用数组实现的,而LinkedList底层是用双链表实现的,初始化方法类似;
// 初始化一个存储int类型数据的双链表
LinkedList<Integer> nums = new LinkedList<>();
// 初始化一个存储String类型数据的双链表
LinkedList<String> strings = new LinkedList<>();
// 常用方法(E代表元素类型)
boolean isEmpty(): 判断链表是否为空
int size():返回链表中元素的个数
boolean contains(Object o):判断链表中是否存在元素o
boolean add(E e):在链表尾部添加元素e
void addFirst(E e):在链表头部添加元素e
E removeFirst():删除链表头部第一个元素
E removeLast():删除链表尾部最后一个元素
5.哈希表HashMap
// 整数映射到字符串的哈希表
HashMap<Integer,String> map = new HashMap<>();
// 字符串映射到数组的哈希表
HashMap<String, int[]> map = new HashMap<>();
// 常用方法(K代表键的类型,V代表值的类型)
boolean contains(Object key):判断哈希表中是否存在键key
V get(Object key):获得键key对应的值,若key不存在,则返回null
V put(K key, V value):将key和value键值对存入哈希表
V remove(Object key):如果key存在,删除key并返回对应的值
V getOrDefault(Object key,V defaultValue):获得key的值,如果key不存在,则返回默认值
Set<K> keySet():获得哈希表中的所有key
V putIfAbsent(K key,V value):如果key不存在,则将键值对存入哈希表;如果key存在,则什么都不做
6.哈希集合 HashSet
// 初始化方法
Set<String> set = new HashSet<>();
// 常用方法(E代表元素类型)
boolean add(E e):如果e不存在,则将e添加到哈希集合
boolean contains(Object o):判断o中是否存在于哈希集合中
boolean remove(Object o):如果元素o存在,则删除元素o
7.队列 Queue
与之前的数据结构不同,Queue是一个接口,它的初始化方式会有些特别。
// 新建一个存储String的队列
Queue<String> q = new LinkedList<>();
// 常用方法(E代表元素类型)
boolean isEmpty(): 判断队列是否为空
int size():返回队列中元素的个数
E peek():返回队头的元素
E poll():删除并返回队头的元素
boolean offer(E e):将元素e插入队尾
8.堆栈Stack
// 初始化
Stack<Integer> s = new Stack<>();
// 常用方法(E代表元素类型)
boolean isEmpty(): 判断堆栈是否为空
int size():返回堆栈中元素的个数
E push(E item):将元素压入栈顶
E peek():返回栈顶元素
E pop():删除并返回栈顶元素