Java-program til at sortere ArrayList af brugerdefinerede objekter efter ejendom

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 CustomObjectklasse med en Stringegenskab, 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.

Interessante artikler...