Wie lässt sich ein Array so umsortieren, dass ein gesuchter Wert an der ersten Array-Position erscheint?
In der Main-Methode des Beispiels wird zunächst ein
Object-Array deklariert und mit fortlaufenden Integer-Werten
befüllt. in der Methode getKey()
wird dann nach
dem Array-Index des Wertes gesucht, der zukünftig an der ersten
Position im Array stehen soll. Hierzu werden der Methode das Array
und der gesuchte Wert als Parameter übergeben. Das Array wird
in der Methode durchlaufen und alle Werte mit dem gesuchten
verglichen. Wird der Wert gefunden, so wird ihr Index
zurückgegeben. Dies zeigt, dass das hier vorgestellte Verfahren
nur das erste Vorkommen des gesuchten Wertes im Array
berücksichtigt.
Ist der gesuchte Wert nicht enthalten, so
wird 0 zurückgegeben und so das Array später gar nicht
erst aufgeteilt wird.
Der gefundene Index wird zusammen mit dem Array der Methode
switchParts() übergeben. In ihr werden zwei Teilarrays durch
das Kopieren von Bereichen erzeugt. Hierzu werden jeweils das
Ausgangsarray, der Start- und der Endindex übergeben.
Durch
System.arraycopy()
wird schließlich das
ursprüngliche Array durch die beiden Teilarrays in umgekehrter
Reihenfolge in überschrieben.
import java.util.Arrays;
public class ArrayParts {
public static void main(String[] args) {
Object[] arr = new Object[10];
for (int i=0; i<arr.length; i++){
arr[i] = new Integer(i);
}
int key = getKey(arr, new Integer(6));
arr = switchParts(arr, key);
for (Object o : arr)
System.out.println(o);
}
private static int getKey(Object[] arr, Object value) {
for (int i = 0; i < arr.length; i++) {
if (arr[i].equals(value)) {
return i - 1;
}
}
return 0;
}
private static Object[] switchParts(Object[] arr, int key) {
Object[] first = Arrays.copyOfRange(arr, 0, key + 1);
Object[] last = Arrays.copyOfRange(arr, key + 1, arr.length);
System.arraycopy(last, 0, arr, 0, last.length);
System.arraycopy(first, 0, arr, last.length, first.length);
return arr;
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.