Java >> Java opplæring >  >> Java

Sorteringseksempel for Java-samlinger

I dette eksemplet vil jeg vise hvordan du bruker java.util.Collections klasse for å utføre sortering.

Samlinger-klassen består av statiske metoder som returnerer eller opererer på samlinger, for eksempel lister, kart, sett osv.

Alle metodene gir en NullPointerException hvis samlingen(e) som sendes som parameter er null.

ArraySortExample

Opprett en klasse kalt ArraySortExample med følgende kildekode:

package com.javacodegeeks.example;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class ArraySortExample {

 public static void main(String[] args) {
 ArrayList<Integer> randInts = new ArrayList<>();
 Random rnd = new Random();

 //generate 5 random ints for randInts
 for (int i=0;i<5;i++) {
 randInts.add(rnd.nextInt());
 }

 //show the unordered randInts
 printList(randInts);

 //sort the randInts ArrayList
 Collections.sort(randInts);

 //show the ordered randInts
 printList(randInts);
 }

 public static void printList(List<Integer> l) {
 System.out.print("[ ");
 for (int i=0;i<l.size();i++) {
 System.out.print(l.get(i)+" ");
 }
 System.out.println("]");
 }
}

Mitt resultat er dette (din vil være annerledes):

[ -1503773474 -1286923903 1899281552 390130031 -706284752 ]
[ -1503773474 -1286923903 -706284752 390130031 1899281552 ]

Jeg opprettet en ArrayList og jeg fylte den med 5 tilfeldige heltall ved å bruke java.util.Random klasse. Deretter brukte jeg Collections.sort() for å sortere heltallene i ArrayList. Jeg skrev ut ArrayList i begge to trinn:usortert og sortert, for å se resultatet av Collections.sort() metode.

BackwardSortExample

Den samme metoden, Collections.sort() , kan også brukes til å sortere i den andre retningen, dvs. fra det største tallet til det minste. Dette kan gjøres ved å legge til en annen parameter, en komparator. Se eksempelet nedenfor:

package com.javacodegeeks.example;

import java.util.*;

public class BackwardSortExample {

 public static void main(String[] args) {
 ArrayList<Integer> randInts = new ArrayList<>();
 Random rnd = new Random();

 //generate 5 random ints for randInts
 for (int i=0;i<5;i++) {
 randInts.add(rnd.nextInt());
 }

 //show the unordered randInts
 printList(randInts);

 //sort the randInts ArrayList
 Collections.sort(randInts, new Comparator<Integer>() {
 @Override
 public int compare(Integer o1, Integer o2) {
 return (o2.intValue() > o1.intValue()) ? 1 : -1;
 }
 });

 //show the ordered randInts
 printList(randInts);
 }

 public static void printList(List<Integer> l) {
 System.out.print("[ ");
 for (int i=0;i<l.size();i++) {
 System.out.print(l.get(i)+" ");
 }
 System.out.println("]");
 }
}

Utgangen min er:

[ 1496339441 247557973 -557265969 -1655233986 674163918 ]
[ 1496339441 674163918 247557973 -557265969 -1655233986 ]

Det som endret seg i dette eksemplet er sorteringsrekkefølgen:denne gangen i revers. For å gjøre dette, sendte jeg en annen parameter til Collections.sort() metode, en Comparator og overbelastet compare(T o1,T o2) metode. Denne metoden forteller til Collections.sort() metode hvordan du sorterer elementene i samlingen som må sorteres.

Java Tag