- 正则表达式
1)用规定的字符制定一些规则,校验数据的格式合法性
2)字符类,[]默认匹配一个字符
3)预定义字符类,默认匹配一个字符
① . 任意字符 ② \d 数字 ③ \D 非数字 ④ \s 空白字符 ⑤ \S 非空白字符 ⑥ \w 英文、 数字、下划线 ⑦ \W 非单词字符
4)贪婪量次
① ? 匹配0次或1次 ② * 匹配0次或多次 ③ + 匹配1次或多次
- Arrays类
1)数组操作工具类
import java.util.Arrays;
public class ArraysDemo1 {
public static void main(String[] args) {
int[] arr = {1, 2, 23, 453, 34};
// 打印数组内容
System.out.println(Arrays.toString(arr));// 返回 [1, 2, 23, 453, 34]
// 排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));// 返回 [1, 2, 23, 34, 453]
// 二分搜索(已排序数组)
System.out.println(Arrays.binarySearch(arr, 2));// 有返回索引,无返回负数
}
}
2)自定义排序,自定义比较器只能用引用类型的元素
import java.util.Arrays;
import java.util.Comparator;
public class ArraysDemo2 {
public static void main(String[] args) {
Integer[] arr = {1, 2, 23, 453, 34};
Arrays.sort(arr, new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2; // 左大于右返回正整数,左小于右返回负正整数,相等返回0
}
});
System.out.println(Arrays.toString(arr));// 返回 [1, 2, 23, 34, 453]
}
}
- 基本算法
1)选择排序,每轮选择当前位置与后面比较,交换位置
import java.util.Arrays;
public class ArraysDemo3 {
public static void main(String[] args) {
Integer[] arr = {1, 2, 23, 453, 34};
int len = arr.length;
for (int i = 0; i < len - 1; i++) {
for (int j = i+1; j < len; j++) {
if(arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
2)二分查找,已排序,数据元素折半比较
public class ArraysDemo4 {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 7, 8, 9};
int idx = ArraysDemo4.binarySearch(arr, 10);
System.out.println(idx);
}
public static int binarySearch(int[] arr, int serachData) {
// 有返回索引,无返回 -1
int lidx = 0; // 左位置
int ridx = arr.length - 1;// 右位置
while (lidx <= ridx) {
int midx = (lidx + ridx) / 2; // 中间位置
if(serachData > arr[midx]) {
lidx = midx + 1;
} else if(serachData < arr[midx]) {
ridx = midx - 1;
} else {
return midx;
}
}
return -1;
}
}
- lambda表达式
1)简化匿名内部类
2)函数式接口,必须是接口,且接口中只有一个抽象方法
public class ArraysDemo5 {
public static void main(String[] args) {
// 原匿名内部类
Animal a = new Animal() {
@Override
public void run() {
System.out.println("原匿名内部类跑");
}
};
a.run();
// 简化
Animal a1 = ()-> {
System.out.println("原匿名内部类简化跑");
};
go(a1);
}
public static void go(Animal a) {
a.run();
}
}
@FunctionalInterface
interface Animal {
void run();
}