JDK常用API

这里说明一下,这些常见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();

    }
}

输出:

 


版权声明:本文为weixin_49849351原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。