一 、 对数组进行排序
这里指的数组包括基本数据类型的数组,例如int ,float,string等,
方法一: 调用Arrays的sort方法,默认为升序排序
与c++的用法类似,也可以指定范围进行排序
int[] intNum = {2,3,1};
Arrays.sort(intNum);// 默认升序排序
Arrays.sort(intNum, 1, 2); // 对数组中的制定范围进行排序
方法二: 自定义排序,实现Comparator接口
在Java中如果对自定义类数组进行排序,或者二维数组排序,可以实现Comparator接口进行排序
class MyComparator implements Comparator<float[]> {
@Override
public int compare(float[] o1, float[] o2) {
if (o1[0] == o2[0]) {
return 0;
}
return o1[0] < o2[0] ? -1 : 1; // 按照数组第一位升序排序
}
}
float[][] nums = {{1,2},{3,4}};
Comparator myCompare = new MyComparator();
Arrays.sort(nums, myCompare);
Arrays.sort(nums, 0, 1, myCompare); // 自定义排序方法, 从fromIndex 到 endIndex
users[0] = new User(10,"a");
users[1] = new User(8,"b");
users[2] = new User(9, "c");
Arrays.sort(users, new Comparator<User>() { // 自定义排序 , 其他功能同上
@Override
public int compare(User o1, User o2) {
....; // 自定义排序规则
return 0;
}
});
方法三: 自定义类实现Comparable接口
如果自定义类实现了comparable 接口,那么在调用Arrays的sort方法时候,会根据类中的CompareTo方法进行排序
class User implements Comparable<User>{
public User(int stuNo, String name) {
this.stuNo = stuNo;
this.name = name;
}
String name;
int stuNo;
@Override
public int compareTo(User o) {
// 按照学号排序
return 0;
}
}
Arrays.sort(users);
对 集合进行排序
java集合,即List的相关实现类,ArrayLIst, LinkedList, vector都可以使用Collections,注意不是Collection,两者有区别,的排序方法。
public void listSort() {
List<Integer> list = new ArrayList<>();
list.add(10);
list.add(9);
List<User> userList = new LinkedList<>();
Collections.sort(list); // 直接对list排序
Collections.sort(userList);
Collections.sort(userList, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return 0;
}
});
}