LeetCode Java解题常用类方法(持续更新中......)

开刷LeetCode,把一些Java中常用类的方法,归纳整理,方便今后查阅。不断更新中。。。。。。

字符串

String转int、long等

1
2
3
4
5
6
public void test() {
String sInt = "123";
int s = Integer.parseInt(sInt);
long ls = Long.parseLong(sInt);
System.out.println(s + " " + ls);
}

StringBuffer

StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。 在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的。 但是有一个最显著的区别在于,对于StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别。 另外由于StringBuffer是线程安全的,关于线程的概念后续有专门的章节进行介绍,所以在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。

1.String 转 StringBuffer

1
StringBuffer s = new StringBuffer("abc");

2.append方法
将内容追加到StringBuffer末尾

1
2
3
StringBuffer s = new StringBuffer("abc");
s.append("efg");
System.out.println(s.toString());

3.delete*方法 deleteCharAt(int index) 该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。第一位为0 s.delete(int start,int end) 该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。

1
2
3
4
5
StringBuffer s = new StringBuffer("abc");
s.append("efg");
s.deleteCharAt(2);
s.delete(0,2);
System.out.println(s.toString());

4.insert方法 StringBuffer insert(int offset, String str) 该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:

1
2
3
StringBuffer sb = new StringBuffer("TestString");
sb.insert(4,"hello");
System.out.println(sb.toString());

5.reverse方法 StringBuffer reverse() 该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。例如:

1
2
3
StringBuffer sb = new StringBuffer("TestString");
sb.reverse();
System.out.println(sb.toString());

经过反转以后,对象sb中的内容将变为”gnirtStseT”。 6、setCharAt方法 setCharAt(int index, char ch) 该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。例如:

1
2
StringBuffer sb = new StringBuffer("bc");
sb.setCharAt(1,'D');

则对象sb的值将变成”aDc”。

数组

排序

Array.Sort() 快排

1
2
3
4
5
6
7
8
9
10
11
public void test() {
int[] arrayToSort = new int[] { 48, 5, 89, 80, 81, 23, 45, 16, 2 };
System.out.println("排序前");
for (int i = 0; i < arrayToSort.length; i++)
System.out.println(arrayToSort[i]);
// 调用数组的静态排序方法sort
Arrays.sort(arrayToSort);
System.out.println("排序后");
for (int i = 0; i < arrayToSort.length; i++)
System.out.println(arrayToSort[i]);
}

数组与list转换

数组转list

调用Arrays.asList()方法:

1
2
3
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
1
2
String[] strings = str.split(" ");
List<String> list = Arrays.asList(strings);

list转数组

1
2
3
4
5
List list = new ArrayList();
list.add("1");
list.add("2");
final int size = list.size();
String[] arr = (String[])list.toArray(new String[size]);

数字

比大小

Math.max(int a, int b); Math.max(float a, float b); Math.min(int a, int b);

1
2
3
4
5
6
7
public void testMain() throws Exception {
int a = 100;
int b = 200;
System.out.println(Math.max(a,b));
System.out.println(Math.min(a,b));
}

Hash

hashMap put返回值

在做leetcode 中 205. Isomorphic Strings这道题时,看到 discuss 中,有用到 map.put(key, value)的返回值,后查看了一下源码。其返回值为之前存进去key对应的value。

jdk源码注释 @return the previous value associated with key, ornull if there was no mapping forkey. (A null return can also indicate that the map previously associated null with key,if the implementation supports null values.)

1
2
3
4
5
6
7
public void test() {
Map<Character,Integer> m = new HashMap<>();
System.out.println(m.put('a',2));
System.out.println(m.put('b',3));
System.out.println(m.put('a',1));
System.out.println(m.put('a',5));
}

输出为:null null 2 1

一些已经写好的数据结构

最小堆 PriorityQueue
双端队列 Deque deque = new LinkedList();