Ich beschäftige mich erst seit kurzem mit Java und habe folgendes Problem: Ich lese aus einer Datenbank Datensätze (Adressen) in ein Array ein. Normalerweise muss ich die Größe des Arrays im Vorfeld deklarieren, etwa so:
public class TestClass { public static void main(String[] args) { int[] array1 = new int[10]; int array2[] = new int[20]; } }
Nun weiss ich aber bei der Abfrage im Vorfeld nicht, wieviel Datensätze tatsächlich übergeben werden (kann einer sein, können aber auch 100 sein). Ich möchte daher erst die Anzahl zählen und dann das Array deklrieren. Funktioniert das überhaupt und wie sieht das auf Quelltextebene aus?
Also mit einem normalen array wirst du das - soweit ich weiss - nicht hinbekommen. Probiers doch mit nem vector oder einer LinkedList! Das sollte das sein, was du brauchst.
Wenn möglich keinen Vector verwenden. Nimm lieber eine ArrayList oder eine andere Implementierung des List-Interfaces. Vector ist internal synchronized und deswegen Grotten langsam. Immer!
Ja, das funktioniert. Ein Java-Array hat zwar, einmal initialisiert, eine feste Größe, aber diese muß erst zur Laufzeit bestimmt werden. Du könntest also sowas machen:
public class TestClass { public static void main(String[] args) { DBResult result = DB.LiesDatensaetze(); int anzahlTreffer = result.getAnzahlTreffer(); String[] rows = new String[anzahlTreffer]; for (int i = 0; i < anzahlTreffer; i++) { rows[i] = result.getValue(); } } }
Trotzdem solltest Du aber überlegen, ob ein Array für Deine Zwecke die passende Datenstruktur ist, oder ob Du mit einer List oder einer anderen Collection nicht besser fährst.
Vector ist internal synchronized und deswegen Grotten langsam. Immer!