AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[Java] Array-Länge verändern

Ein Thema von 3_of_8 · begonnen am 10. Feb 2006 · letzter Beitrag vom 11. Feb 2006
Antwort Antwort
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#1

[Java] Array-Länge verändern

  Alt 10. Feb 2006, 18:11
Morgen.

In Delphi kenn man dynamische Arrays leicht verändern:
Delphi-Quellcode:
var a: array of String;
begin
//...
setlength(a,10);
end;
In Java mache ich das momentan so:
Code:
String a[]=new String[0];
//...
a=new String[10];

Problem dabei: Der bisherige Inhalt des Arrays wird gelöscht. Wie kann ich das umgehen?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
zappel

Registriert seit: 30. Jan 2004
65 Beiträge
 
Delphi 2005 Personal
 
#2

Re: [Java] Array-Länge verändern

  Alt 10. Feb 2006, 18:28
Du könntest als Alternative eine java.util.ArrayList nehmen. Dessen Größe wird dynamisch angepasst.

Java Klassenbeschreibung
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [Java] Array-Länge verändern

  Alt 10. Feb 2006, 19:05
Aber die erwartet ein Object und gibt auch selbiges zurück.

Wie kann ich dann das Object, das get(Index) zurückgibt, in meine Klasse casten?

Also praktisch in Delphi ginge das ja so:
Delphi-Quellcode:
(List.Get(0) as TMyClass).myproperty:='blubb';
//oder
TMyClass(List.Get(0)).myproperty:='blubb';
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#4

Re: [Java] Array-Länge verändern

  Alt 10. Feb 2006, 19:13
Leider kennt Java keine dynamischen Arrays wie Delphi. Das wäre schön, damit muß man aber nunmal leben.
Mach es einfach zu Fuß
Code:
String[] a=new String[0];
//...
String[] b = new String[10];
for (int i = 0; i<=a.length();i++)
  b[i] = a[i];
a = b;
//Eventuell noch b = null;
//Edit:
Zu deiner letztem Frage:
Jede Klasse in Java ist von Object abgeleitet, stellt also eine Subklasse von Object dar. Hast du also wie zB in deinem Fall einen String in ein Object gesteckt, kannst du ohne weiteres dieses Object auch wieder zu String zurückcasten:
Code:
String(liste.get(index));
Ich habe noch nie mit der ArrayList gearbeitet und es gerade auch nicht getestet, aber meinem Verständnis nach müßte es funktionieren.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [Java] Array-Länge verändern

  Alt 10. Feb 2006, 19:18
Es ist kein String, sondern eine Klasse.

Und wie greife ich dann auf eine der Variablen der Klasse zu? Also wie kann ich der was zuweisen?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#6

Re: [Java] Array-Länge verändern

  Alt 10. Feb 2006, 19:23
Zitat von 3_of_8:
Es ist kein String, sondern eine Klasse.
String ist auch eine Klasse
Zitat von 3_of_8:
Und wie greife ich dann auf eine der Variablen der Klasse zu? Also wie kann ich der was zuweisen?
Na genauso, wie man es immer macht, mit "."
Code:
MyClass(liste.get(index)).MyProperty = "foo";
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: [Java] Array-Länge verändern

  Alt 11. Feb 2006, 11:52
Hi,
nur als kleiner Tipp, in Java sollte man ruhig den Typ in den gecastet wird klammern

Genau genommen gibt es in Java zwei Möglichkeiten. Alles was von java.util.List erbt (genauer dieses Interface implementiert) kann dir als dynamisches Array dienen. Insbesondere die ArrayList bietet dir natürlich schon direkt alle Funktionen die du brauchst, du kannst aber auch eine java.util.List in ein Object-Array umwandeln (gibt da eine Funktion).

Die eine Möglichkeit ist nun einfach dass hinzufügen und casten. Die Alternative, die ab Java 1.5 / 5.0 verfügbar ist, ist der generische Weg. Wie der Name schon sagt, sind die Datentypen generisch und du musst dich nicht mehr selbst um das casten kümmern. Allerdings musst du dafür halt mind. Version 1.5 installiert haben.

Der Aufruf wäre etwas wie :
Code:
java.util.List<DeinTyp> liste = new java.util.ArrayList<DeinTyp>();
liste.add(new DeinTyp());
DeinTyp buffer = liste.get(0); // kein casting nötig, da generisch
...
Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#8

Re: [Java] Array-Länge verändern

  Alt 11. Feb 2006, 19:13
Zitat von Der_Unwissende:
Hi,
nur als kleiner Tipp, in Java sollte man ruhig den Typ in den gecastet wird klammern
Jupp, klar. Is mir durchgerutscht. Bin halt immer noch im Geiste Delphi-Programmierer
Zitat von Der_Unwissende:
Die Alternative, die ab Java 1.5 / 5.0 verfügbar ist, ist der generische Weg. Wie der Name schon sagt, sind die Datentypen generisch und du musst dich nicht mehr selbst um das casten kümmern. Allerdings musst du dafür halt mind. Version 1.5 installiert haben.

Der Aufruf wäre etwas wie :
Code:
java.util.List<DeinTyp> liste = new java.util.ArrayList<DeinTyp>();
liste.add(new DeinTyp());
DeinTyp buffer = liste.get(0); // kein casting nötig, da generisch
...
Das ist mal interessant, mit 1.5 habe ich mich noch so gut wie gar nicht beschäftigt. Werd ich aber gleich mal machen *sichgeradeeinBuchdazugekaufthat*
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz