//重写Comparator。需要明确范型的类,因此只能是类不能是primative类型,比如int[]就不行,需要转化为Integer[]。compare如果是a - b就是升序,compareTo也是一样的。list可以用stream不需要写comparator。
public void sortStringArray(String[] strArr) {
Arrays.sort(strArr, new Comparator<String>() {
public int compare(String a, String b) {
return a.compareTo(b);
}
});
}
public void sortArray(Integer[] nums) {
Arrays.sort(nums, new Comparator<Integer>() {
public int compare(Integer a, Integer b) {
System.out.println(a - b);
return a - b;
// if (a > b) {
// return 1;
// } else if (a < b) {
// return -1;
// }
// return 0;
}
});
}
public void sortArrayLambda(Integer[] nums) {
Arrays.sort(nums, (a, b) -> a - b);
}
public List<Integer> sortStream(List<Integer> nums) {
// List<Integer> result = nums.stream().sorted().collect(Collectors.toList());
List<Integer> result = nums.stream().sorted((a, b) -> a - b).collect(Collectors.toList());
return result;
}
public static void main(String[] args) {
Test test = new Test();
Integer[] numArr = {3,1,4,2};
test.sortArrayLambda(numArr);
for (Integer i : numArr) {
System.out.print(i + " ");
}
System.out.println();
String[] strArr = {"dz", "az", "bz"};
test.sortStringArray(strArr);
for (String str : strArr) {
System.out.print(str + " ");
}
System.out.println();
List<Integer> list = new ArrayList<>();
list.add(8);
list.add(3);
list.add(2);
list.add(9);
List<Integer> result = test.sortStream(list);
for(Integer i : result) {
System.out.print(i + " ");
}
System.out.println();
Integer iArr[] = {2, 1, 9, 6, 4};
Arrays.sort(iArr);//ascending
Arrays.sort(iArr, Collections.reverseOrder());//decending
//Convert int[] to Integer[]
int[] oldArray = {5, 3, 8, 9};
Integer[] newArray = new Integer[oldArray.length];
int i = 0;
for (int value : oldArray) {
newArray[i++] = Integer.valueOf(value);
}
Integer a = new Integer(15);
Integer b = new Integer(8);
System.out.println(a.compareTo(b));
System.out.println(String.valueOf(a).compareTo(String.valueOf(b)));
}