注:博主主要刷题语言是python,这里为了方便日后学习,对其它语言进行积累。
目录:
1、 数据结构
2、 C++,java,python横向对比
数据结构
- Arrays
- Map
- Math
- String
- List
- Vector
- Queue
- Set
- Stack
Arrays用法:
3. Arrays.copyOf(array, length) 复制算法
4. Arrays.sort(double[]) 升序排列
5. Arrays.asList(arr).contains() 判断数组是否包含某个元素
6.
Map用法:
7. Map<T, T> map = new HashMap<
8. Map.get(key):获取值
9. Map.getOrDefault(Object key, V defaultValue):相当于python中的setdefault
10. Map.put(key, value):添加键值对
11. Map.keySet():map中所有key值集合
Math用法:
12. Math.max(Array) 获取最大值
13. Math.abs() 获取绝对值
10.Math.pow() 获取指数
String:
- Integer.parseInt(str):字符串转数字
- str.length():字符串长度
- str.charAt(i):获取字符串第i个字符
- str1.compareToIgnoreCase(str2):忽略大小的字符串比较
- str1.compareTo(str2):忽略大小的字符串比较
- str.equals(String ostr):判断两个字符串是否相等
- str.indexOf(ch):查找字符/字符串出现的位置
- str.substring(beginIndex, endIndex)
- str.split(正则表达式):拆分结果保存到字符串数组中
- str1.concat(str2):将str1和str2合并
- str.toLowerCase():将字符串全部转化为小写
- str.toUpperCase():将字符全部转化为大写
- str.trim():忽略前导空格和尾部空格
- str.replace(lodeChar, newChar)
- str.split() :返回值为字符串数组
- str.toCharArray()
StringBuilder:
append(参数):追加内容到StringBuilder末尾
insert(位置,参数):将内容插入指定位置
toString:StringBuilder转化为String
int length:长度
List:
- List person=new ArrayList<>(): 多用于遍历寻找
- LinkedList person= new LinkedList(); 多用于插入删除
- add(obj):添加元素
- remove(index/obj):删除元素
- get(index):获取元素
- size:获取长度
- set(index, target):修改索引处元素值
- Collections.sort(List<> l)
Vector
- Vector add(int index, Object element) :指定位置加入
- add(Object o) :加到末尾
- addAll(Collection c):按照collection迭代顺序加入
- int capacity():返回当前容量
- void clear():清除所有元素
- clone():克隆一个副本
- elementAt(int index):返回指定索引处的组件。
- Object get(int index) :返回向量中指定位置的元素。
- boolean isEmpty()
Queue
- add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
- remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
- element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
- offer 添加一个元素并返回true 如果队列已满,则返回false
- poll 移除并返问队列头部的元素 如果队列为空,则返回null
- peek 返回队列头部的元素 如果队列为空,则返回null
- put 添加一个元素 如果队列满,则阻塞
- take 移除并返回队列头部的元素 如果队列为空,则阻塞
Set
- Set seen = new HashSet();
- Set.add(): 添加元素
- Set.contains(value):判断集合是否包含value
Stack
- boolean empty()
- Object peek( )
- Object pop( )
- Object push(Object element)
- int search(Object element)
其它:
- String.valueOf(n).toCharArray():数字转字符数组
- PriorityQueue pq = new PriorityQueue((k1, k2) -> grid[k1 / N][k1 % N] - grid[k2/N][k2%N]);
横向对比
结构定义:
Array
DynamicArray
HashTable
Priority queue
容器转换
C++:
String:
字符串长度:
str.length()
string[] s = str.Split(“regex”)
JAVA输入输出:
Scanner cin = new Scanner(new BufferedInputStream(System.in));
int n = cin.nextInt();
String s = cin.next();
double t = cin.nextDouble();
String s = cin.nextLine();
判断是否有下一个输入可以用 cin.hasNext() 或 cin.hasNextInt() 或 cin.hasNextDouble()
输出一般可以直接用 System.out.print() 和 System.out.println(),前者不输出换行,而后者输出。
注:
C++可以对创建的字符串进行内部修改,Java和Python不可以
Java 直接赋值String对象不会创建重复对象,而通过new方式会重复创建相同的字符串
JAVA使用StringBuilder完成字符串拼接效率更高