ArrayList Alphabet

Sammykop

Mitglied
Huhu Leute 😉
Es gab zwar schon ein ähnliches Thema hier im Forum, dennoch habe ich keine Lösung auf mein Problem gefunden.
Und zwar habe ich zwei ArrayLists und möchte diese über die Konsole ausgeben, alphabetisch geordnet.
[c]
private static ArrayList<MediaData> mediaDataBase = new ArrayList<MediaData>();
private static ArrayList<Author> authorDataBase = new ArrayList<Author>();
[/c]

Wie kann ich das machen?
Vielen Dank schonmal für eure Antworten,

MfG
Sammykop
 
Wie siehen MediaData und Author aus? Gehören die Klassen bei der Ausgabe zusammen oder werden beide Listen hintereinander getrennt ausgegeben.

Falls sie getrennt ausgegeben werden:
Entweder einen Comparator schreiben, oder in den Klassen das Comparable-Interface implementieren, dann mit Collections.sort(List) die Listen sortieren und ausgeben.

Falls die Datensätze zusammengehören bietet es sich an eine eigene Klasse dafür anzulegen, und diese dann ebenfalls comparable machen oder einen Comparator implementieren.
Das Vorgehen ist dann wie oben.

Gruß
 
Huhu 😉
danke für die schnelle Antwort.
Die beiden Listen sollen zusammen ausgegeben werden.
Aber ich habe keine Ahnung wie ich die zusammen bringen soll, denn es handelt sich ja schließlich um zwei verschiedene ArrayLists.
Gruß
Sammykop
 
Wenn beide Listen die gleiche Länge haben:
Mit einer for-Schleife drüberzählen, aus beiden Listen das n-te Element nehmen und beide Elemente zusammenfassen.

Pseudocode:
Java:
ArrayList<A> listA;
ArrayList<B> listB;
if(listen gleich lang){
List<MyEntry> listE = ...;
for( i = 0, ... über eine der Listen zählen ...){
A a = listA.get(i);
B b = listB.get(i);
listE.add(new MyEntry(a,b));
}
}
private static class MyEntry{

A a;
B b;

//konstruktor, compare-Methode etc.

}

}

Am Ende enthält ListE Objekte die die Elemente aus beiden Listen zusammenfassen, dort dann wie gehabt comparable implementieren oder einen Comparator schreiben.

Gruß
 
Ich bin davon ausgegangen, dass die Datensätze in den Listen semantisch zusammenhängen.

z.B.
ListA: X, A, H
ListB: 32, 57, 1

Sortierte Ausgabe:
A - 57
H - 1
X - 32

Daher meine Idee, die Objekte zuerst zusammenzufassen (und daher auch der Entity-Typ),
dann bekommt man nämlich eine Liste
ListE: (x,32),(a,57),(h,1)
und mit der passenden compare-Methode (vergleich der namen aus Klasse A)
wird daraus leicht
(a,57),(h,1),(x,32).

Kann natürlich auch sein, dass ich die Problemstellung nicht richtig interpertiert habe, die Angaben lassen ja etwas Spielraum frei.

Gruß
 
Nene die hängen nich miteinander zusammen
Aber in der Ausgabe brauch ich beide Listen
sry dass ich mich so unklar ausgedrückt hab XD
Gruß
Sammykop
 
Ich mach ma fix nen Beispiel:

AuthorList: Adele, Bruce Springsteen, Charly Chaplin
MediaList: Avatar, Batman, Chamelion

Ausgabe: Adele, Avatar, Batman, Bruce, Chamelion, Charly Chaplin

Gruß
Sammykop
 
Außerdem habe ich ein Interface Matchable, welches sowohl Autoren alsauch Mediendateien implementieren.
Ich habe versucht beide Listen in eine arrayList<Matchable> hineinzustecken, die Liste bleibt aber immer leer ??

Gruß
Sammykop
 
Java:
public ArrayList<Matchable> searchForAll(String str){
    ArrayList<Matchable> returnList = new ArrayList<Matchable>();

		for (int i = 0; i < mediaDataBase.size(); i++) {
			if (mediaDataBase.get(i).match(str)) {
				returnList.add(mediaDataBase.get(i));
			}
		}
		for (int i = 0; i < authorDataBase.size(); i++) {
			if (authorDataBase.get(i).match(str)) {
				returnList.add(authorDataBase.get(i));
			}
		}
    return returnList;
}

Gruß
 
Joa ok, und returnList ist leer? Dann scheint deine match() Methode wohl nicht zu funktionieren 🙂
 
Ich habe ja schon zwei suchen die jeweils mediadatabase und authorDataBase durchsuchen.
Die sind 1:1 kopiert ^^
Und bei daanderen bekomme ich auch Ergebnisse.
Is richtig strange

Gruß
 
Also ^^
ICh adde meiner ArrayList<Author>authorDataBase ein Person namens Sammykop
dann adde ich meiner ArrayList<Mediadata>mediaDataBAse eine Audiodatei namens Trololo die von Sammykop ist

Wenn ich jetzt die Listen einzeln(Mit einer ArrayList<jeweiliger Typ> als rückgabewert) durchsuche:
Java:
	public static ArrayList<Author> searchForAuthor(String str) {
		ArrayList<Author> returnList = new ArrayList<Author>();
		for (int i = 0; i < authorDataBase.size(); i++) {
			if (authorDataBase.get(i).match(str)) {
				returnList.add(authorDataBase.get(i));
			}
		}
		return returnList;
	}
Java:
	public static ArrayList<MediaData> searchForMediaData(String str) {
		ArrayList<MediaData> returnList = new ArrayList<MediaData>();
		for (int i = 0; i < mediaDataBase.size(); i++) {
			if (mediaDataBase.get(i).match(str)) {
				returnList.add(mediaDataBase.get(i));
			}
		}
		return returnList;
	}
Dann ist da was drinne, wenn ich nach Sammykop suche

Suche ich aber in:
Java:
public ArrayList<Matchable> searchForAll(String str){
    ArrayList<Matchable> returnList = new ArrayList<Matchable>();
 
        for (int i = 0; i < mediaDataBase.size(); i++) {
            if (mediaDataBase.get(i).match(str)) {
                returnList.add(mediaDataBase.get(i));
            }
        }
        for (int i = 0; i < authorDataBase.size(); i++) {
            if (authorDataBase.get(i).match(str)) {
                returnList.add(authorDataBase.get(i));
            }
        }
    return returnList;
}
Dann kommt nix raus 🙁
Gruß
 
Zuletzt bearbeitet:
Das ist kein KSKB.
Mehr also dir zu sagen, dass da wohl irgendwas falsch ist können wir so nicht.
 

Neue Themen


Zurück
Oben