1. 方案一:自定义对象实现 Comparable<> 接口?
1. 自定义对象实现 Comparable<> 接口?:
class MyNumber implements Comparable<MyNumber>{
String key;
int value;
public MyNumber(String key, int value){
this.key = key;
this.value = value;
}
@Override
public int compareTo(MyNumber o) {
return this.value - o.value;
}
@Override
public String toString() {
return "MyNumber{" +
"key='" + key + '\'' +
", value=" + value +
'}';
}
}
2. 使用 Collections.sort( list ); 进行排序?:
public class Main {
public static void main(String[] args) {
ArrayList<MyNumber> numbers = new ArrayList<>();
numbers.add(new MyNumber("小宋", 789));
numbers.add(new MyNumber("小王", 123));
numbers.add(new MyNumber("小周", 254));
numbers.add(new MyNumber("小李", 234));
Collections.sort(numbers);
System.out.println(Arrays.toString(numbers.toArray()));
}
}
3. 结果截图?:
2. 方案二:自定义比较器,实现 Comparator<> 接口?:
1. 自定义比较器,实现 Comparator<> 接口?:
class MyComparator implements Comparator<MyNumber>{
@Override
public int compare(MyNumber o1, MyNumber o2) {
return o1.value - o2.value;
}
}
2. 被排序对象代码?:
class MyNumber{
String key;
int value;
public MyNumber(String key, int value){
this.key = key;
this.value = value;
}
@Override
public String toString() {
return "MyNumber{" +
"key='" + key + '\'' +
", value=" + value +
'}';
}
}
3. 使用 Collections.sort( list, comparator); 进行排序?
public class Main {
public static void main(String[] args) {
ArrayList<MyNumber> numbers = new ArrayList<>();
numbers.add(new MyNumber("小宋", 789));
numbers.add(new MyNumber("小王", 123));
numbers.add(new MyNumber("小周", 254));
numbers.add(new MyNumber("小李", 234));
Collections.sort(numbers, new MyComparator());
System.out.println(Arrays.toString(numbers.toArray()));
}
}
4. 结果截图?: