I dette program lærer du at sortere en matrixliste over brugerdefineret objekt efter deres givne ejendom i Java.
For at forstå dette eksempel skal du have kendskab til følgende Java-programmeringsemner:
- Java-klasse og objekter
- Java ArrayList-klasse
Eksempel: Sorter ArrayList af brugerdefinerede objekter efter ejendom
import java.util.*; public class CustomObject ( private String customProperty; public CustomObject(String property) ( this.customProperty = property; ) public String getCustomProperty() ( return this.customProperty; ) public static void main(String() args) ( ArrayList list = new ArrayList(); list.add(new CustomObject("Z")); list.add(new CustomObject("A")); list.add(new CustomObject("B")); list.add(new CustomObject("X")); list.add(new CustomObject("Aa")); list.sort((o1, o2) -> o1.getCustomProperty().compareTo(o2.getCustomProperty())); for (CustomObject obj : list) ( System.out.println(obj.getCustomProperty()); ) ) )
Produktion
En Aa BXZ
I ovenstående program har vi defineret en CustomObject
klasse med en String
egenskab, customProperty.
Vi har også tilføjet en konstruktør, der initialiserer ejendommen, og en getter-funktion, getCustomProperty()
der returnerer customProperty.
I main()
metoden har vi oprettet en matrixliste med listen over brugerdefinerede objekter, initialiseret med 5 objekter.
Til sortering af listen med den givne egenskab bruger vi listens sort()
metode. Den sort()
metode tager listen skal sorteres (endelig sorteret liste er også den samme) og en comparator
.
I vores tilfælde er komparatoren en lambda der
- tager to objekter fra listen o1 og o2,
- sammenligner de to objekters customProperty ved hjælp af
compareTo()
metoden, - og returnerer til sidst et positivt tal, hvis o1's egenskab er større end o2's, negativ, hvis o1s egenskab er mindre end o2's, og nul, hvis de er ens.
Baseret på dette sorteres listen ud fra mindst ejendom til størst og gemmes tilbage til liste.