이 글은 주로 Java List sort () 메소드가 compare ()를 다시 작성하여 오름차순, 내림차순, 역순을 달성하는 사례를 소개하며 좋은 참조 값을 가지고 있으며 모든 사람에게 도움이되기를 바랍니다. 에디터를 따라가보세요
이 기사는 Comparator 인터페이스의 compare () 메서드를 다시 작성하여 List의 오름차순, 내림차순 및 역순 정렬을 실현하는 것을 목표로합니다.
먼저 명확하게하십시오.
compare (Integer o1, Integer o2) {}에서 o1은 List 컨테이너의 다음 요소를 나타내고 o2는 List 컨테이너의 이전 요소를 나타냅니다!
다음 예제를 통해 명확하게 이해할 수 있습니다.
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.sort(new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
System.out.println(o1 + "," + o2);//输出o1,o2
return 0;
}
});
}
출력은 다음과 같습니다.
-
2,1
-
3,2
오름차순
코드 :
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.sort(new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
if(o1>o2)
return 1;//第二个元素(o1)比第一个元素(o2)大,返回1
if(o1==o2)
return 0;
return -1;
}//1,0,-1三者同时出现时,1表示不交换位置,0表示相等时不交换,-1表示交换
});
System.out.println(list.toString());
}
산출:
[1,2,3]
내림차순
코드 :
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.sort(new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
if(o1>o2)
return -1;//第二个元素(o1)比第一个元素(o2)大,返回-1
if(o1==o2)
return 0;
return 1;
}//1,0,-1三者同时出现时,1表示不交换位置,0表示相等时不交换,-1表示交换
});
System.out.println(list.toString());
산출:
[3,2,1]
리버스
코드 :
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.sort(new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return -1;
}//倒序就直接返回-1
});
System.out.println(list.toString());
}
산출:
[3,2,1]
보충 : Java의 List 컬렉션에있는 요소의 순서, 역순 및 임의 정렬을위한 샘플 코드
너무 말도 안되는 말은하지 않겠습니다. 누구나 직접 코드를 봐야합니다 ~
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class Test {
List list = new LinkedList();
public static void main(String[] args) {
List list = new LinkedList();
for ( int i = 0 ; i < 9 ; i ++ ) {
list.add( " a " + i);
}
Collections.sort(list); // 顺序排列
System.out.println(list);
Collections.shuffle(list); // 混乱的意思
System.out.println(list);
Collections.reverse(list); // 倒序排列
System.out.println(list);
System.out.println(Collections.binarySearch(list, " a5 " )); // 折半查找
}
}
보충 : java8은 두 필드에 따라 정렬됩니다 (하나는 양수, 하나는 역순)
List<Student> collect2 = list.stream()
.sorted(Comparator.comparing(Student::getAge).reversed().thenComparing(Student::getScore))
.collect(Collectors.toList());
위의 내용은 개인적인 경험입니다. 참고 자료를 제공하고 편집자를 지원할 수 있기를 바랍니다. 실수가 있거나 충분히 고려되지 않은 경우 언제든지 저를 계몽하십시오.