刷题细节扫盲

Integer. valueOf()方法的作用

Integer. valueOf()可以将基本类型int转换为包装类型Integer,或者将String转换成Integer,String如果为Null或“”都会报错

String.valueOf()

将**转为字符串
在这里插入图片描述

Integer.parseInt用法

pareInt(String s)
将字符串s转换为十进制的数字,默认为十进制

public static void main(String[] args) {
        int num=Integer.parseInt("100");
        System.out.println(num);
    }

同样的,Double.parseDouble(String s)…

getOrDefault()方法的使用

1.getOrDefault(key,default)
作用:如果存在相应的key则返回其对应的value,否则返回给定的默认值。
2.key的值相同,使value的值加一。比如需要统计一个字符串中所含的字母及对应字母的个数。
方法:
(1)定义一个哈希表hash
(2)hash.put(c,hash.getOrDefault(c,0)+1); //若没有就是0,若有就是原有值增一。
3.比较两个哈希表中key对应的value值大小:如果其中一个哈希表中不存在某个key,那么两个hash表如何比较。
方法:
hash1.getOrDefault(c,0) < hash2.getOrDefault(c,0) //如果两个哈希表都有某个key值,那么他们比较的就是其中value的大小,若其中一个哈希表不存在某个key值,那么比较的就是其中的默认值。

Map的一些用法

**keySet()**方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。

Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。

PriorityQueue优先级队列用法

用法

先说结论,JAVA中默认是小根堆,即小的在堆顶(poll时小的出去)

接下来看下默认的最小堆写法

PriorityQueue<Integer> queue = new PriorityQueue<Integer>(new Comparator<Integer>(){
 @Override
 public int compare(Integer o1, Integer o2){
 return o1 < o2 ? -1 : 1; // 最小优先队列,直接 return o1.compareTo(o2);
                          // 最大优先队列,则反过来 return o2.compareTo(o1);
 }
});

compare含义
compare(Integer o1, Integer o2)

一定要记住o1是待插元素,o2是最后一个非叶子节点,当compare()返回的值<0时入队,>0时不入队

小根堆:o1若要入队,则o1<o2,同时compare需要返回负的,即o1.compareTo(o2)

大根堆:o1若要入队,则o1>o2,同时compare需要返回负的,即o2.compareTo(o1)

lambda表达式写法

大括号

PriorityQueue<Integer> queue = 
new PriorityQueue<Integer>((Integer o1, Integer o2)->{
 return o1 < o2 ? -1 : 1; 
 });

省略大括号

PriorityQueue<Integer> queue = 
new PriorityQueue<Integer>((Integer o1, Integer o2)-> o1 - o2);

省略变量类型

PriorityQueue<Integer> queue = new PriorityQueue<Integer>((o1,  o2)-> o1 - o2);
具体场景

TopK问题:
一、找海量数据中最大的K个
构造小根堆,堆顶为最小数,不断入队,当队列数大于K时,将最小的堆顶弹出,最后剩下的就是K个最大数

二、数组中最小的K个
构造最大堆,堆顶为最大数,不断入队,当队列数小于K时,将最大的堆顶弹出,最后剩下的就是K个最小数

二叉树的定义
class TreeNode{
	int val;
	TreeNode left;
	TreeNode right;
	TreeNode(){}
	TreeNode(int val){this.val = val;}
	TreeNode(int val,TreeNode left,TreeNode right){
		this.val = val;
		this.left = left;
		this.right = right;
	}
}
链表的定义
class ListNode{
    int val;
    ListNode next;
    
    // 节点的构造函数(无参)
    public ListNode() {
    }
    
    // 节点的构造函数(有一个参数)
    public ListNode(int val) {
        this.val = val;
    }
    
    // 节点的构造函数(有两个参数)
    ListNode(int val,ListNode next){
        this.val = val;
		this.next = next;
    }
}

java提供的反转List Collections.reverse(list);

   List<String> list=new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
   System.out.println("反转之前:"+list );
   Collections.reverse(list);
   System.out.println("反转之后:"+list );

反转字符串的类StringBuffer

StringBuffer stringBuffer=new StringBuffer("abc");
        stringBuffer.reverse();
        System.out.println("反转之后:"+stringBuffer);

获取List中存放的最后一个元素

public class ListUtil {

  /**
   \* 获取list中存放的最后一个元素
   \* @param list
   \* @param <T>
   \* @return
   */
  public static <T> T getLastElement(List<T> list) {
    return list.get(list.size() - 1);
  }
}

方法1.使用.arraycopy方法——数组截取

使用方法:arraycopy(原数组名称,原数组起始下标,目标数组名称,目标数组起始下标,截取长度)

举例:

​ 1.说明:数组arr1是原数组,数组arr2是目标数组,需要把数组arr2的前三个数赋值给数组arr1。

​ 2.补充:可以从任意位置赋值。

System.arraycopy(arr2,0,arr1,0,3);

方法2. 使用 java.util.Arrays.copyOf方法——数组截取

**使用方法:java.util.Arrays.copyOf(原数组名称,新数组长度);

举例:

​ 1.说明:数组arr1是原数组,数组arr2是新数组,需要把原数组arr1的前三个数赋值重新赋值给新数组arr2.

​ 2.注意事项:

​ 只能把原数组中的一部分全部定义一个新的数组。

int arr2[]=java.util.Arrays.copyOf(arr1,3);

一个字符串中中的数字分解成整型数字

'9’-‘0’,9的码为48+9,57,这两个字符减去就等于减去了他们的码,所以57-48等于int类型9。利用这个机制,你可以从一个字符串中中的数字分解成整型数字。char类型说是存储一个字符,其实是存储字符的ASC(类型是int)码。

比如:String str = numString[digits.charAt(num) - ‘0’];

digits = “23”;

digits.charAt(num) - ‘0’ = 2

取数组中间元素的位置

首先取数组中间元素的位置,不难写出int mid = (left + right) / 2;这么写其实有一个问题,就是数值越界,例如left和right都是最大int,这么操作就越界了,在二分法 (opens new window)中尤其需要注意!

所以可以这么写:int mid = left + ((right - left) / 2);

Deque

详细看这篇博客https://blog.csdn.net/devnn/article/details/82716447
在这里插入图片描述
在这里插入图片描述

将String字符串转为char[]:

str.toCharArray()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值