ArrayList sortieren

godi

Aktives Mitglied
Hallo!

Ich habe eine ArrayList in der ich Objekte gespeichert habe. Diese Objekte beinhalten wiederum einen String der den Namen des Objektes darstellt.
Wie sortiere ich jetzt die ArrayList am effizientesten so das die Objekte in Alphabetischer Reihe angeordnet werden?

Mein Lösungsweg:
Java:
/**
     * This method sort the weekSportTypesSum alphabetical
     * @param weekSportTypesSum
     * @return weekSportTypesSum sorted
     */

    private List<Exercise> sortWeekSportTypesSum(List<Exercise> weekSportTypesSum) {
        List<String> weekSportTypes = new ArrayList<String>();
        List<Exercise> weekSportTypesSumSort = new ArrayList<Exercise>();

        for (Exercise exercise : weekSportTypesSum) {
            weekSportTypes.add(exercise.getSportType().getName());
        }
        Collections.sort(weekSportTypes);

        for (String name : weekSportTypes) {
            weekSportTypesSumSort.add(searchExerciseName(weekSportTypesSum, name));
        }
        return weekSportTypesSumSort;

    }

    /**
     * This method search an exercise from the weekSportTypeSum at his sportType name and returns it
     * @param weekSportTypesSum
     * @param name
     * @return exercise
     */

    private Exercise searchExerciseName(List<Exercise> weekSportTypesSum, String name) {
        for (Exercise exercise : weekSportTypesSum) {
            if (exercise.getSportType().getName().equals(name)) {
                return exercise;
            }
        }
        return null;
    }

Das geht aber sicher besser oder?

godi
 
Schreibe einen Comparator für deine Klasse und übergib diesen mit der List in die dort Methode. Siehe ALI-Doch.
 
Du kannst Collections.sort direkt einen entsprechenden Comparator übergeben.
Ala
Java:
		Collections.sort(weekSportTypesSum, new Comparator<Exercise>() {
			public int compare(Exercise o1, Exercise o2) {
				return o1.getSportType().getName().compareToIgnoreCase(o2.getSportType().getName());
			}
		});
		return weekSportTypesSum;

Das Erstellen einer zusätzlichen Liste und das neue hinzufügen der Objekte brauchst du dann nicht.
 
deine Exercise-Klasse muss ja das interface
Code:
Comparable
implementieren damit du es sortieren kannst .. in der Methode
Code:
compareTo
des Interfaces kannst du doch dann direkt mit der jeweiligen Eigenschaft getSportType().getName() arbeiten.
 
Wow das ging schnell! 🙂
Danke!

Ich habe jetzt in der Klasse Exercise das comparable Interface implementiert und die Methode
Java:
 public int compareTo(Exercise exercise) {
        return getSportType().getName().compareTo(exercise.getSportType().getName());
    }
ausprogrammiert.
In der anderen Klasse wo ich die Objekte sortieren will habe ich nur mehr Collections.sort(weekSportTypesSum); einfügen müssen. 🙂

funktioniert super! 🙂

godi
 

Zurück
Oben