文章目录
1、直接用字符串比较表示处于区间内,0-9,a-z,A-Z
String.compareTo()
方法
如果两个字符串不一样长,第一个字符和参数的第一个字符不等,结束比较,返回第一个字符的ASCII码差值。
如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至不等为止,返回该字符的ASCII码差值。
如果两个字符串不一样长,可对应字符又完全一样,则返回两个字符串的长度差值
@Test
public void test(){
System.out.println("15".compareTo("10"));//输出 5,第一个字符相同,返回第二个字符差值的ASCII码值 5
System.out.println("35".compareTo("255"));//输出 1,第一个字符不同,返回第一个字符差值的ASCII码值 1
System.out.println("5".compareTo("10"));// 输出 4,第一个字符不同,返回第一个字符差值的ASCII码值 4
System.out.println("15".compareTo("25"));// 输出 -1,第一个字符不同,返回第一个字符差值的ASCII码值 -1
}
2、将二维字符数组一键转化成字符串
String.copyValueOf(char[])
方法,将二维字符数组转化成String
,用到的String.copyValueOf(char[])
的方法
public List<String> char2List(char[][] path){
LinkedList<String> list = new LinkedList<>();
for (char[] ch : path) {
list.add(String.copyValueOf(ch));
}
return list;
}
3、Arrays
比较数值非常需要注意
发现了一个问题:[[-2147483646,-2147483645],[2147483646,2147483647]]
的比较,应该与范围有关?
//得出:[[2147483646,2147483647],[-2147483646,-2147483645]]
Arrays.sort(points,(x,y)->x[0]-y[0])
// 得出[[-2147483646,-2147483645],[2147483646,2147483647]]
Arrays.sort(points,(x,y)->Integer.compare(x[0],y[0]));
//参考其他网友这种写法,这里如果两个值是相等的,那么compare方法需要返回0
//否则 可能 会在排序时抛错,而JDK6是没有这个限制的。Comparison method violates its general contract!
Arrays.sort(points, (p1, p2) -> p1[1] < p2[1] ? -1 : 1);
4、Arrays
一键打印二维数组
Arrays.deepToString(int[][] ...)
5、Arrays
将二维list
一键转化成二维数组
List<int[]> list = new ArrayList<>();
...
return list.toArray(new int[list.size()][]);//这一步一键转化二维数组