获取size
普通类型获取size:
1 2 3 4
| int[] arr = new int[10]; int size = arr.length;
arr == null || arr.length == 0;
|
对于集合类型获取size:
1 2 3 4
| List<String> list = new ArrayList<>(); int size = list.size();
list == null || list.isEmpty();
|
字符串获取size,字符串并不是一个集合,是一个不可变的对象:
str 1 2 3
| int size = str.length(); // 获取字符串的长度 // 判空 str == null || str.isEmpty();
|
排序
Java的对象排序方法:
1 2 3 4 5 6
| Arrays.sort(array); Collections.sort(list);
list.sort((o1, o2) -> o1.getField() - o2.getField()); list.sort(Comparator.comparingInt(Object::getField));
|
如何去理解list.sort((a, b) -> ??? );
表达式返回的值:
| 返回值 |
含义 |
| 负数 |
a应该排在b前面 |
| 0 |
a和b的顺序不变 |
| 正数 |
a应该排在b后面 |
举例:
1
| list.sort((a, b) -> (b + a).compareTo(a + b));
|
compareTo方法返回一个整数,表示两个字符串的字典顺序比较结果。它的返回值有以下含义:
- 返回负数:如果调用
compareTo方法的字符串(即b + a)在字典顺序上小于参数字符串(即a + b),则返回一个负数。
- 返回0:如果调用
compareTo方法的字符串(即b + a)在字典顺序上等于参数字符串(即a + b),则返回0。
- 返回正数:如果调用
compareTo方法的字符串(即b + a)在字典顺序上大于参数字符串(即a + b),则返回一个正数。
字符串内部排序
1 2
| char[] arr = s.toCharArray(); Arrays.sort(arr);
|
最大数问题
最大数问题
1 2 3 4 5 6 7 8 9 10 11 12 13
| public String largestNumber(int[] nums) { StringBuilder res = new StringBuilder(); List<String> list = new ArrayList<String>(); for (int num : nums) { list.add(String.valueOf(num)); } list.sort((a, b) -> (b + a).compareTo(a + b)); for (String str : list) { res.append(str); } String ans = res.toString().replaceFirst("^0+", ""); return ans.isEmpty() ? "0" : ans; }
|
类型转化
数字转字符串:
1 2 3 4
| int num = 123; String str1 = String.valueOf(num); String str2 = Integer.toString(num); String str3 = num + "";
|
字符串转数字:
1 2
| String str = "123"; int num1 = Integer.parseInt(str);
|
String 和 char[] 之间的转化:
1 2 3
| String str = "Hello"; char[] charArray = str.toCharArray(); String str2 = new String(charArray);
|
去除前导0的办法
1 2 3 4 5 6 7 8 9 10
| String ans = res.toString().replaceFirst("^0+", "");
while (ans.length() > 1 && ans.charAt(0) == '0') { ans = ans.substring(1); }
while (res.length() > 1 && res.charAt(0) == '0') { res.deleteCharAt(0); }
|