Hallo,
gibt es eine Möglichkeit in einer Arraylist nur bestimmte Zeilen zu sortieren. Also nur die Zeilen 3-5 oder so. Oder gibt es vielleicht die Möglichkeit mehrere Spalten zum Sortieren anzugeben. Also erst nachname dann Vorname dann Wohnort usw.
Bin bis jetzt soweit das ich mir eine Klasse geschrieben habee die abhängig von der gewünschten Spalte die gesamt Liste sortiert. möchte aber eben nach mehreren Spalten sortieren. Deswegen meine Idee erst die gesamte tabelle nach einer Spalte dann alle gleichen nach der 2. Spalte usw. Weiß aber nicht wie ich das realisieren soll Hatte schon überlegt die gleichen jeweils in eine ArrayList und das dann weitersortieren und dann wieder die gleichen in eine ArrayList und weitersortieren usw. Allerdings bräucte die dafür 6 arraylisten und denke das das Speicherverschwendung ist.
Habt ihr eine idee wie ich das ganze realiesieren kann?
Hier meine bisheriege sortierKlasse
gibt es eine Möglichkeit in einer Arraylist nur bestimmte Zeilen zu sortieren. Also nur die Zeilen 3-5 oder so. Oder gibt es vielleicht die Möglichkeit mehrere Spalten zum Sortieren anzugeben. Also erst nachname dann Vorname dann Wohnort usw.
Bin bis jetzt soweit das ich mir eine Klasse geschrieben habee die abhängig von der gewünschten Spalte die gesamt Liste sortiert. möchte aber eben nach mehreren Spalten sortieren. Deswegen meine Idee erst die gesamte tabelle nach einer Spalte dann alle gleichen nach der 2. Spalte usw. Weiß aber nicht wie ich das realisieren soll Hatte schon überlegt die gleichen jeweils in eine ArrayList und das dann weitersortieren und dann wieder die gleichen in eine ArrayList und weitersortieren usw. Allerdings bräucte die dafür 6 arraylisten und denke das das Speicherverschwendung ist.
Habt ihr eine idee wie ich das ganze realiesieren kann?
Hier meine bisheriege sortierKlasse
Code:
class ArraySort implements Comparator<PjOv>{
public final static int LASTNAME = 0;
public final static int FIRSTNAME = 1;
public final static int CONTPARTNER = 2;
public final static int INLAND = 3;
public final static int ATTACH = 4;
private int sortField;
public ArraySort(int sortField) {
this.sortField = sortField;
}
public int compare(PjOv pjOv1, PjOv pjOv2 )
{
int result = 0;
switch (sortField) {
case 0:
result = pjOv1.getLastname().getName().compareTo(pjOv2.getLastname().getName());
break;
case 1:
result = pjOv1.getFirstName().getName().compareTo(pjOv2.getFirstName().getName());
break;
case 2:
result = pjOv1.getContractPartner().getName().compareTo(pjOv2.getContractPartner().getName());
break;
case 3:
result = pjOv1.isAttach() && (!pjOv2.isAttach()) ? 1 : -1;
break;
case 4:
result = pjOv1.isInland() && (!pjOv2.isInland()) ? 1 : -1;
break;
default:
break;
}
return result;
}
}