这里说明一下,这些常见API是Bean在刷LeetCode中经常用到的,所以做了个整理。后期如果再次发现有好用的API也会补充上来!!!
算是一点心得吧!
刷算法刚开始不要太纠结 如果自己能想出来但是写的时候感觉很烂,要筛选的条件很多 那就直接看答案吧! 然后写多看多估计算法水平就上来了吧!
Arrays.copyOfRange(intersection, 0, index)
PS:这个是一个数组的API,intersection代表原数组,0代表截取数组的起始下标,index代表截取数组的结束下标。这个API在处理数组的问题上,效率很高(比起循环数组赋值)。具体为什么,就要去看源码啦。这里就不说明啦!!!
注意:截取的数组包括起始下标,但不包括结束下标。
接下来我们来讲讲TreeSet
TreeSet set = new TreeSet(); 一个有序集合 不重复存在同值的元素
Long ceiling = set.ceiling(E e);
方法返回在这个集合中大于或者等于给定元素的最小元素,如果不存在这样的元素,返回null.
Long floor= set.floor(E e);
方法返回在这个集合中小于或者等于给定元素的最大元素,如果不存在这样的元素,返回null.
set.add(E e);
添加数据进集合
set.remove(E e);
从集合中删除指定数据
BigDecimal 可以存任意大小的整形
BigDecimal sum = new BigDecimal(0); sum被赋值为0
BigDecimal bigDecimal = new BigDecimal(next); bigDecimal被赋值为next
sum = sum.add(bigDecimal); //两数相加
Arrays.toString(a) //输入数组a而不是地址
String a="1223";
String b=a.substring(1,3); //b="22"; substring 左闭右开
Scanner
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串(nextLine):");
String str1 = scanner.nextLine();
System.out.println(str1);
System.out.println("请输入字符串(next):");
String str = scanner.next();
System.out.println(str);
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串(next):");
String str = scanner.next();
System.out.println(str) ;
System.out.println("请输入字符串(nextLine):");
String str1 = scanner.nextLine();
System.out.println(str1);
上面这个代码nextLine就直接跳过了不让赋值
效果:
next()方法读取到空白符就结束;
nextLine()读取到回车结束;
next()与nextLine()比较:
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
4、next() 不能得到带有空格的字符串。
nextLine():1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
hasNext()
方法会判断接下来是否有非空字符.如果有,则返回true
,否则返回false
hasNextLine()
方法会根据行匹配模式去判断接下来是否有一行(包括空行),如果有,则返回true
,否则返回false
友情提示:若使用
scanner.nextLine();输入回车被强行赋值为空串那么再加一个scanner.nextLine()就好了实现效果一样!!!!
今天给算法折磨了 很大一个原因是不熟悉集合的API
所以来这记录一下:
Set<List<Integer>> res = new HashSet<>(); //set集合是去重的 如果添加两个值一样的集合那么只会保留一个
res.add(Arrays.asList(nums[i],nums[l],nums[r])); //集合的添加元素方法
List<List<Integer>> ans = new ArrayList<>();
ans.addAll(res); //集合间的相互转换
2021.11.13
String a=new String("aaa");
String b=new String("a");
a.contains(b) 判断一个字符串是否为另外一个字符串的子串
String substring = word.substring(1); 截取第二个字符串以后的所有字符(包括第二个)
word.substring(0,1) 截取第一个字符
word.charAt(0) 将word的第一个字符取出来
11.14
今天来介绍一个运算符 ------ ^
这个运算符叫做异或 只有两边一真一假才返回true否则返回false;
Arrays.fill(ret, -1); //将ret数组的所有值改为-1
句子转数组
String line="bean bea be b"
String[] words = line.split(" ");
//以空格为分隔符,将line转为一个字符串数组["bean","bea","be","b"]
将map里的所有entry传给list
List<Map.Entry<String, List<Integer>>> list = new ArrayList<>(map.entrySet());
求两个List集合的交集
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
list1.add("ke");
list1.add("wei");
list1.add("qin");
list2.add("ke");
list2.add("wei");
list2.add("shan");
list1.retainAll(list2);
System.out.println(list1);
}
输出:
LinkedList list = new LinkedList<>(); 这个类继承了队列类,因此他有poll方法
Object a=list.poll 将元素弹出,先进先出
使用 Arrays.equals()方法比较两个数组元素是否相等
复制数组:
int[] a1 = {1, 2, 3, 4, 5};
int[] a2 = Arrays.copyOf(a1, 3);
System.out.println(Arrays.toString(a1)) // [1, 2, 3, 4, 5]
System.out.println(Arrays.toString(a2)) // [1, 2, 3]
字符串转整形:
Integer.valueof(String)
对list集合进行排序:
List<Integer> list = new ArrayList<Integer>();
list.add(6);
list.add(8);
list.add(4);
list.add(5);
//正序排(从小到大)
Collections.sort(list);
System.out.println(list.toString());
//倒叙排(从大到小)
Collections.reverse(list);
正则表达式匹配字符串中的数字
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
String str = scan.nextLine();
String[] split = str.split("\\D");
for (String s : split) {
System.out.println(s);
}
scan.close();
}
}
输出: