Comment réécrire la méthode de Java List pour implémenter l'ordre croissant, décroissant et inverse

Cet article présente principalement le cas de la réécriture de la méthode sort () de la liste Java compare () pour obtenir un ordre croissant, décroissant et inversé. Il a une bonne valeur de référence et j'espère que cela sera utile à tout le monde. Suivons l'éditeur pour jeter un œil

Cet article vise à réaliser le tri croissant, décroissant et inversé de la liste en réécrivant la méthode compare () de l'interface Comparator.

Tout d'abord, soyez clair: dans
compare (Integer o1, Integer o2) {}, o1 représente l'élément suivant dans le conteneur List, et o2 représente l'élément précédent dans le conteneur List!

Cela peut être clairement compris à travers les exemples suivants:

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;
 }
 });
 }

La sortie est:

  • 2,1

  • 3,2

Code croissant
:

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());
 }

Sortir:

[1,2,3]

Code décroissant
:

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());

Sortir:

[3,2,1]

Code inverse
:

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());
 }

Sortir:

[3,2,1]

Supplément: Exemple de code pour l'ordre, l'ordre inverse et le tri aléatoire des éléments de la collection List en Java

Je ne dirai pas trop de bêtises, tout le monde devrait regarder le code directement ~

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 " )); // 折半查找 
 } 
}

Supplément: java8 est trié selon deux champs (un ordre positif et un inverse)

List<Student> collect2 = list.stream()
 .sorted(Comparator.comparing(Student::getAge).reversed().thenComparing(Student::getScore))
 .collect(Collectors.toList());

Ce qui précède est une expérience personnelle, j'espère vous donner une référence, et j'espère que vous pourrez soutenir l'éditeur. S'il y a des erreurs ou si elles ne sont pas pleinement prises en compte, n'hésitez pas à m'éclairer

Je suppose que tu aimes

Origine blog.csdn.net/dcj19980805/article/details/115214235
conseillé
Classement