오름차순, 내림차순 및 역순을 구현하기 위해 Java List 메서드를 다시 작성하는 방법

이 글은 주로 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());

위의 내용은 개인적인 경험입니다. 참고 자료를 제공하고 편집자를 지원할 수 있기를 바랍니다. 실수가 있거나 충분히 고려되지 않은 경우 언제든지 저를 계몽하십시오.

추천

출처blog.csdn.net/dcj19980805/article/details/115214235