ich bin neu in java und habe jetzt folgendes problem:
ich habe zwei arraylists in einer steht ein string in der anderen ein long. sie sind theoretisch abhängig voneinander (nirgends deklariert) und sollen sortiert werden.
ich habe folgende frage zur oben genannten situation:
wie sorge ich dafür dass arraylist1 weis dass arraylist2 von ihr abhängig ist? bzw dass index arraylist1 = index arraylist2 sein soll?
und wenn dies geschehen ist ist es möglich über den collections.sort(arraylist2) dann auch gleich arraylist1 zu ändern? bzw muss ich von den arraylists weggehen? was würdet ihr mir empfehlen?
bzw die zuordnung? sitze nun schon seid ner weile über dem problem und alles googlen, nachschlagen hat mir keine lösung gebracht... can you help me? =)
hm wenn der String und der Long von einander abhängig sind mach doch ein Objekt das ein String und ein long hat und mach dann eine Arraylist von diesen Objekt.
Wenn du uns noch verrätst wozu das gut sein soll, können wir dir vielleicht den einen oder anderen "Javaweg" vorschlagen, denn üblich sind solche Tabellen in Java nicht gerade...
dankeschonmal ^^ fals es nicht klappt weis ich ja wo ich mich melde =)
edit: achja ich liste es btw so wie du beschrieben hast
irgendwie steh ich immernoch total aufm schlauch... wie kann ich ihm denn nun sagen dass er mir den array mit den filenames nach der größe sortieren lassen soll?
mir ist es grad irgendwie unmöglich da richtig reinzudenken... =/
hmm kann mir wer von euch helfen wie ein solcher compare befehl aussehen müsste? also ich bekomm die file namen ja aus dem File.listFile() aber ich bekomms grad nich hin das dann so auszuformulieren dass er mir die größe der einen datei mit der anderen vergleicht...
static public class FileLengthComparator
implements Comparator {
public int compare(Object o1, Object o2) {
File file1 = (File) o1;
File file2 = (File) o2;
long sizeDiff = file1.length() - file2-length();
if (sizeDiff < 0)
return -1;
if (sizeDiff > 0)
return 1;
return 0;
}
}
Ungestestet, sollte aber klappen, falls nicht sag bescheid.
Aufrauf dann über
Code:
Arrays.sort(fileArray, new FileLengthComparator());
Der Grund warum ich nicht direkt
Code:
return file1.length() - file2.length();
schreibe und mir die if Abfrage spare ist, das File#length einen long zurückgibt, was zu einem überlauf führen kann da compare(..) einen int liefern soll.