-
Du kannst auch eine der Tree klassen nehmen. Du stopfst das Zeug da rein und nimmst es sortiert wieder raus. Den COmparator (der zwei Elemente vergleicht und die Ordnung definiert) must du in Tree.Construktor mitliefern. Ist glaub die TreeList oder so... schau halt mal was die java.util so bietet.
-
Die TreeList sieht auch nicht schlecht aus. Werds mir mal genauer angucken. Danke für eure Tipps!
-
Hi,
also ich habe nur eben den Post kurz überflogen. Zur ersten Frage ob man ein Array einfach so erweitern kann, kann ich dir sagen das geht nicht. Außer am definiert sich ein größeres Array und schiebt die Daten dort rein. Aber das kann ja nicht im sinne von einem sauberen Progarmier stiel sein. Dafür gibt es in Java die so genannten ArrayListen(java.util.ArrayList). Bei dennen musst du dir keine Gedanken um die Größe machen sie erweitern fortlaufenend, wenn du an die Grenze stößt.
Sortieren ohne eine Hilfsvari geht, aber das kann ich jetzt nicht mehr aus dem stehgreif beantworteten. Aber was spricht dagegen einen Hilfsvari zu benutzten, das ist eingetlich sogar gängige Praxis. ;)
Ich hoffe ich konnte dir weitere helfen.
-
Hier ein einfaches Beispiel wie es gehen kann, und es ist schnell.
Dennoch kann man festhalten das die in Util verwendetetn Implementationen von ArrayList etc. sicher genausogut verwendet werden können.
@uwegw Na ja die Frage ist was für Zeiger brauchst Du? Zeiger auf dedizierte Speicherbereiche bekommst Du in Java nicht, aber Zeiger auf andere Objekte und damit kannst Du ja einfach verkettete Listen etc. bauen ;-)
Code:
package com.demo.arraycopy;
import java.util.Arrays;
import java.util.Random;
/**
* Demo für die Verwendung von System.ArrayCopy und Array.sort();
* @author marohn
* @since 2.09p
*/
public class ArrayCopyDemo
{
//Original Array
private Integer[] arrayOfInt = new Integer[10];
/**
* Konstruktor, Vorbelegung des Arrays mit Integer 1..10
*/
public ArrayCopyDemo()
{
for (int i = 0; i<10; i++)
{
arrayOfInt[i] = new Integer(i+1);
}
}
/**
* Schreibt die Werte des Arrays in die Console
*/
public void dumpArray()
{
for (int i = 0; i < arrayOfInt.length; i++)
{
System.out.println(arrayOfInt[i].toString());
}
}
/**
* Schreibt zufällige Werte in das Array
* @param startIdx Index ab dem das Array mit den Werten gefüllt werden soll
*/
public void fillArrayWithRandomStuff(int startIdx)
{
Random rnd = new Random(System.currentTimeMillis());
for (int i = startIdx; i < arrayOfInt.length; i++)
{
arrayOfInt[i] = new Integer(rnd.nextInt());
}
}
/**
* Sortiert das Array mit Hilfe der Arrays.sort -Methode
* Funktioniert hier so easy weil Integer bereits das Comparator-Interface implementiert
* bei eigenen Klassen muss sichergestellt werden, das dieses Inerface implementiert wurde
*/
public void sortArray()
{
Arrays.sort(arrayOfInt);
}
private void incArray(int anz)
{
Integer[] newArr = null;
if (anz>0 && arrayOfInt != null)
{
newArr = new Integer[arrayOfInt.length + anz];
System.arraycopy(arrayOfInt, 0, newArr, 0, arrayOfInt.length);
}
else
{
throw new IllegalStateException("Parameter nicht im definierten Bereich");
}
arrayOfInt = newArr;
}
/**
* Start
* @param args - keine
*/
public static void main(String[] args)
{
ArrayCopyDemo demo = new ArrayCopyDemo();
demo.dumpArray();
System.out.println("---------------------");
demo.incArray(10);
demo.fillArrayWithRandomStuff(10);
demo.dumpArray();
System.out.println("---------------------");
demo.sortArray();
demo.dumpArray();
System.out.println("---------------------");
}
}