Erste Schritte Über verschiedene Datentypen iterieren. Gibt es sowas?

glitsch

Aktives Mitglied
Hallo zusammen

Kann ich mehrere Datentypen in ein Array (Map ...) oder sonst einen Container packen und dann praktisch darüber iterieren? Ich bin gerade etwas verzweifelt am suchen, aber find keinen Ansatz. :rtfm:

Danke für die Hilfe!
 

glitsch

Aktives Mitglied
Also ich will zum Beispiel alle primitiven Datentypen in ein Array packen und drüber iterieren? Also geht das nur, wenn ich das ganze mit Klassen mache, die dann instanziert werden und ich quasi diese Instanzen (Objekte) in ein Array packe? Ich kapier das nicht ganz. :autsch: :bahnhof: ;(
 

Xeonkryptos

Bekanntes Mitglied
Du brauchst schon Objekte dafür. Zum Beispiel könntest du eine Oberklasse schreiben der Container heißt und lässt dann davon Klassen erben, die dann deine Objekte halten wie ein int-Wert.

Java:
public class Container {}

Java:
public class ContainerInt extends Container{
public int einInt;
// ...
}

Und so weiter. Dann setzt du Container einfach als Objekt an und fertig. ODER du verwendest einfach die Object-Klasse als Objekt in deiner Liste/Map und schreibst die Klassen dann ohne explizite Vererbung. Das ginge auch und liefe auf das selbe hinaus.
 

JavaProfi

Aktives Mitglied
Also ich will zum Beispiel alle primitiven Datentypen in ein Array packen und drüber iterieren? Also geht das nur, wenn ich das ganze mit Klassen mache, die dann instanziert werden und ich quasi diese Instanzen (Objekte) in ein Array packe? Ich kapier das nicht ganz. :autsch: :bahnhof: ;(

Das was du suchst sind Wrapper-Klassen!
Java hat für jeden primitiven Datentyp (Ordinaltyp) auch eine Wrapper-Klasse.
Hier kannst du dich einlesen:

Java ist auch eine Insel – 8.2 Wrapper-Klassen

Instanzen dieser Wrapperklassen sind dann Objekte.

Gruß
JP
 

glitsch

Aktives Mitglied
ohh mann. eigentlich wollt ich nur mal eben über eine paar Datentypen iterieren. :( Aber ich seh, ich muss in Java noch viel lernen. Komm nicht aus der Javaecke, darum die vielleicht etwas "komische" Frage. Aber ich denke, für meine Aufgabe im Java-Modul wird es auch der etwas weniger elegante Weg tun, wenn ich einfach alle Datentypen mit einer normalen Systemausgabe nacheinander aufrufe. :D
 
S

Spacerat

Gast
Warum so schwer?
Java:
new ArrayList<Object>().add(1.0)
funktioniert bei mir prächtig, dank auto in-/outboxing ab Java Version 5.
Beim drüber iterieren dann mit "instanceof Wrapper-Klasse" herausfinden, um welchen Primitivtypen es sich handelte und entsprechend zuweisen.
 
Zuletzt bearbeitet von einem Moderator:

glitsch

Aktives Mitglied
Ok, der thread schafft bei mir grad mehr Fragezeichen wie Antworten. Aber daran muss ich mich glaube ich gewöhnen. :D

Nochmals. Ich muss für jeden Datentyp eine eigene Klasse erstellen und diese Klassen dann einer WrapperKlasse zuordnen, um über die Instanz dieser Klasse zu iterieren DAMIT ich endlich finally an meinem Ziel die paar Datentypen rauskrieg? Also das logische Prinzip habe ich nicht ganz erfasst ... Was soll daran praktisch sein?
 

Final_Striker

Top Contributor
Nochmals. Ich muss für jeden Datentyp eine eigene Klasse erstellen und diese Klassen dann einer WrapperKlasse zuordnen, um über die Instanz dieser Klasse zu iterieren DAMIT ich endlich finally an meinem Ziel die paar Datentypen rauskrieg? Also das logische Prinzip habe ich nicht ganz erfasst ... Was soll daran praktisch sein?

Nein, Java stellt dir die Wrapper-Klassen bereit: int->Integer, double->Double, ...
 

glitsch

Aktives Mitglied
OK, ich werd mal noch mit meiner glorreichen Idee warten, bis wir etwas vertiefter in Java vorgedrungen sind. Das ganze Klassenhandling haben wir nur mal oberflächlich gestreift von der Thematik. Scheint mir ja nicht grad so intuitiv zu sein, wie das funktionieren soll. :eek:

Danke mal vorerst!
 
H

hüteüberhüte

Gast
Warum so schwer?
Java:
new ArrayList<Object>().add(1.0)
funktioniert bei mir prächtig, dank auto in-/outboxing ab Java Version 5.
Beim drüber iterieren dann mit "instanceof Wrapper-Klasse" herausfinden, um welchen Primitivtypen es sich handelte und entsprechend zuweisen.

1.0 ist ein double-Literal. Mit instanceof muss er überhaupt nichts prüfen, der Typ ergibt sich aus dem Kontext. Außerdem macht diese Codezeile für eine Zuweisung doch wenig Sinn, denn add gibt nichts zurück.

@glitsch: Mach dich erst mit den (primitiven) Datentypen vertraut, dann mit Arrays und den Collection Klassen.
 
S

Spacerat

Gast
1.0 ist ein double-Literal. Mit instanceof muss er überhaupt nichts prüfen, der Typ ergibt sich aus dem Kontext. Außerdem macht diese Codezeile für eine Zuweisung doch wenig Sinn, denn add gibt nichts zurück.
Willkommen bei "nichts kapiert". Dann muss ich dir (und damit auch dem TO) wohl mal präsentieren, wie das gemeint war.
Java:
ArrayList<Object> numbers = new ArrayList<Object>();
numbers.add((byte) 1);
numbers.add((short) 1);
numbers.add((char) 1);
numbers.add(1);
numbers.add(1L);
numbers.add(1.0F);
numbers.add(1.0);
// iterieren
for(Object o : numbers) {
  if(o instanceof Byte) {
    byte b = (Byte) o;
  } else if(o instanceof Short) {
    short s = (Short) o;
  } else if(o instanceof Character) {
    char c = (Character) o;
  } else if(o instanceof Integer) {
    int i = (Integer) o;
  } else if(o instanceof Long) {
    long l = (Long) o;
  } else if(o instanceof Float) {
    float f = (Float) o;
  } else if(o instanceof Double) {
    double d = (Double) o;
  }
}
 
Zuletzt bearbeitet von einem Moderator:

Illuvatar

Top Contributor
Das Problem hier ist eigentlich nur, dass Primitive in Java die "große Ausnahme" sind: In Java ist alles ein Objekt, und deshalb kann man auch alles in ein
Code:
Object[]
oder eine
Code:
List<Object>
oder ähnliches stecken... alles, bis auf die primitiven Datentypen.
Für diese gibt es jetzt als "Workarounds" die "Wrapper-Klassen"
Code:
Integer
,
Code:
Byte
etc. Instanzen dieser Klassen sind Objekte, die nichts weiter machen, als genau ein
Code:
int
bzw
Code:
byte
zu speichern. Mit diesen zu hantieren, kann aber mühsam sein.
Deshalb gibt es seit Java 5 das "Autoboxing", was Code wie
Java:
Object[] foo = new Object[42];
    foo[0] = 3;
erlaubt. Das müsste dir eigentlich ermöglichen, das zu machen, was du brauchst... man muss sich nur unter Umständen bewusst sein, dass foo[0] dann in Wirklichkeit kein
Code:
int
sondern ein
Code:
Integer
ist.
Das ist alles etwas unschön, aber eigentlich gar nicht rocket science. ;)
 
H

hüteüberhüte

Gast
Willkommen bei "nichts kapiert". Dann muss ich dir (und damit auch dem TO) wohl mal präsentieren, wie das gemeint war.

Dass nicht homogene Listen gemeint waren, erwähntest du glaube ich nicht (und der TO ging glaube ich auch nicht davon aus). Außerdem ergibt die eine Zeile auch dann keinen Sinn^^ Also erst nachdenken, dann Kritik üben :D
 

glitsch

Aktives Mitglied
@Illuvatar

Danke für die grundlegende Erklärung. Das wusste ich natürlich nicht. Ich bin mich eher gewohnt, dass man verschiedene Datentypen auch in Arrays (Datenfeldern) rein packen kann und das ohne grosse Mühe. Darum war ich etwas sehr erstaunt, dass ich dafür nicht direkt eine Möglichkeit kriege.

Code:
Object[] foo = new Object[4];
	    foo[0] = 3;
	    foo[1] = meinLong;
	    foo[2] = meinChar;
	    foo[3] = meinBoolean;

Aber nun ja, was noch nicht ganz so "rocket science" daran ist, dass er die 4 (Parameter da) am anfang auch ausgibt, egal wo ich die Zählschleife anfange hoch zu zählen. Was auch etwas crappy daran ist, dass er mit den "Long", den ich aus einer anderen Variable als value beziehe, einfach abschneidet :)autsch:). Die Assignments für die einzelnen Indizies des Objekts sind auch etwas gewöhnungsbedürftig. Muss ich das (Datenfeld?)-Objekt hier ständig line-per-line füllen?
 
S

Spacerat

Gast
Analog dazu funktioniert das auch mit Collections [Java]myCollection.addAll(Collection<? extends Object> otherCollection);[/code]Zu der ganzen Thematik müsste man sich parallel mal die Klassen java.util.Collections, java.util.Arrays, java.lang.reflect.Array und die zahlreichen Maps, Sets und Lists der standard API anschauen. Gewöhnungsbedürftig ist das nur, wenn man vorher z.B. PHP programmiert hat, wegen der dort nicht vorhandenen Typsicherheit.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
B OOP Über einen AVL-Baum iterieren (NullPointer) Java Basics - Anfänger-Themen 5
B OOP Über eine doppelt verkettete Liste iterieren Java Basics - Anfänger-Themen 4
O Über Map laufen Erklärung Java Basics - Anfänger-Themen 4
U Best Practice Buttons sollen ÜBER Labeln liegen, also quasi im Vordergrund. WIE? Java Basics - Anfänger-Themen 4
AssELAss Über ein Objekt vom Typ BigDecimal iterieren Java Basics - Anfänger-Themen 6
L Über 100e Werte anzeigen Java GUI Java Basics - Anfänger-Themen 1
0 Über CMD die JAVA Datei ausführen? möglich? Java Basics - Anfänger-Themen 8
A Über Jahr iterieren, Freitag der 13. Java Basics - Anfänger-Themen 2
S Über Button Zeichnung ändern Java Basics - Anfänger-Themen 5
J Über ... Dialog (Mac OS) Java Basics - Anfänger-Themen 8
L Über abstrakte Klasse auf eine Klasse zugreifen? Java Basics - Anfänger-Themen 6
PINTOR Über IP verschicken Java Basics - Anfänger-Themen 3
D Über ein Interface methoden ansprechen Java Basics - Anfänger-Themen 9
C Über Boolean Static, String ausgeben Java Basics - Anfänger-Themen 3
S Über Bild zeichnen Java Basics - Anfänger-Themen 21
H Mac Menu-Über Programm anpassen Java Basics - Anfänger-Themen 3
K Datentypen Über Collection iterieren bringt fehler Java Basics - Anfänger-Themen 8
P Über HashMap iterieren -> NullPointerException Java Basics - Anfänger-Themen 2
J Array List - Über die Konsole eingeben Java Basics - Anfänger-Themen 1
A Struts: Über Collection iterieren mir Taglibs? Java Basics - Anfänger-Themen 13
G Über Button DB Tabelleninhalt löschen Java Basics - Anfänger-Themen 24
M Über einen Button etwas zeichnen lassen Java Basics - Anfänger-Themen 5
G Über undo, copy, cat, paste, delete Funktionen Java Basics - Anfänger-Themen 3
D Über Button abhängig von Auswahl 2 versch. Fenster öffnen Java Basics - Anfänger-Themen 2
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
N Verschiedene Konstruktoren mit gleichen Datentypen Java Basics - Anfänger-Themen 8
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
I SWT Plattformunabhängig laden - verschiedene SWT .jar laden Java Basics - Anfänger-Themen 0
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
T for-each-Schleife, verschiedene Datentypen Java Basics - Anfänger-Themen 1
HoT verschiedene ArrayLists mit ähnlichem Namen in for-Schleife aufrufen Java Basics - Anfänger-Themen 3
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
M JavaFX- Verschiedene Stages Java Basics - Anfänger-Themen 1
B Get / Set - Methode für verschiedene Entities? (generisch) Java Basics - Anfänger-Themen 21
L Wie Input auf verschiedene Kriterien hin überprüfen? Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Fahrzeugtypen mit unterschiedlicher Ausgabe Java Basics - Anfänger-Themen 17
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
F Komplexe Zahlen auf verschiedene Weise addieren Java Basics - Anfänger-Themen 18
N verschiedene Reihenfolgen ausgeben Java Basics - Anfänger-Themen 15
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
T Datentypen Kann Java 2 verschiedene Datentypen vergleichen? Java Basics - Anfänger-Themen 2
B String auseinander nehmen in verschiedene Teile Java Basics - Anfänger-Themen 9
X Variablen Problem bei Aufteilung in verschiedene Class-Files Java Basics - Anfänger-Themen 4
E JAvaFX: Verschiedene Panels nach Klick auf Node des TreeView anzeigen Java Basics - Anfänger-Themen 0
T Java verschiedene Anweisungen Java Basics - Anfänger-Themen 23
W Verschiedene Bibliotheken in einer Anwendung? Java Basics - Anfänger-Themen 2
tuc Erste Schritte verschiedene objekte in einem feld speichern Java Basics - Anfänger-Themen 4
L Verschiedene Bilder per Knopfdruck anzeigen lassen Java Basics - Anfänger-Themen 17
J ArrayList über verschiedene Klassen verwenden Java Basics - Anfänger-Themen 7
P Erste Schritte durch MenuBar verschiedene Fenster öffnen Java Basics - Anfänger-Themen 2
G Datentypen verschiedene Objekte in eine ArrayList, Generics Java Basics - Anfänger-Themen 2
GoldenShadow Input/Output Verschiedene Versionen von Input/Output Java Basics - Anfänger-Themen 3
I Drucken in Java / verschiedene Papierformate Java Basics - Anfänger-Themen 0
P Verschiedene Java Versionen nutzen Java Basics - Anfänger-Themen 6
Z Was habe ich davon mit einem Datentyp verschiedene Instanzen zu haben? Java Basics - Anfänger-Themen 6
S write(), weshalb verschiedene Ausgaben? Java Basics - Anfänger-Themen 4
E Erste Schritte Verschiedene Anfängerfragen (Rekursion, Terminierung, Schleife, etc.) Java Basics - Anfänger-Themen 5
I String trennen und verschiedene Wörter holen Java Basics - Anfänger-Themen 6
B Verschiedene Objekte in 2 dimensionalem Array speichern Java Basics - Anfänger-Themen 10
S Datei ausführen, verschiedene Ordner Java Basics - Anfänger-Themen 2
O Verschiedene Farben in einer GUI Java Basics - Anfänger-Themen 15
R Klassen Mehrere/Verschiedene Objekte umcasten Java Basics - Anfänger-Themen 8
N Vererbung Verschiedene Subclasses nach cast zur Superclass unterscheiden Java Basics - Anfänger-Themen 9
D Verschiedene Fragen zu meinem Projekt Java Basics - Anfänger-Themen 6
S textPane verschiedene formatierungen Java Basics - Anfänger-Themen 8
K Verschiedene JDK´s paralell nutzen? Java Basics - Anfänger-Themen 3
M Verschiedene Möglichkeiten mit 'equals' abdecken? Java Basics - Anfänger-Themen 9
H 2 verschiedene Objekte in Liste mit Compareable sortieren Java Basics - Anfänger-Themen 7
N Verschiedene Klassen als Parameter elegant übergeben? Java Basics - Anfänger-Themen 4
X Listen und verschiedene Methoden Java Basics - Anfänger-Themen 6
B Zwei verschiedene Daten vergleich Java Basics - Anfänger-Themen 2
K Input/Output Verschiedene Ordner für Java u.v.m. Projekte Java Basics - Anfänger-Themen 3
G Umwandlung in verschiedene Zahlensysteme Java Basics - Anfänger-Themen 4
R Verschiedene Jar Versionen nutzen Java Basics - Anfänger-Themen 14
D Umgebungsvariable verschiedene Werte von JAVA_HOME? Java Basics - Anfänger-Themen 4
J verschiedene Anweisungen bei verschiedenen Zuständen Java Basics - Anfänger-Themen 9
F Info zwischen verschiedene Klassen austauschen Java Basics - Anfänger-Themen 4
R Input/Output verschiedene Datentypen als Bytes in Datei speichern Java Basics - Anfänger-Themen 15
Blindxantos Klassen in verschiedene Packages unterteilen Java Basics - Anfänger-Themen 2
F verschiedene Daten abspeichern Java Basics - Anfänger-Themen 13
N Verschiedene JFrames in einem JFrame anzeigen Java Basics - Anfänger-Themen 7
A Datentypen Verschiedene Threads synchronisieren Java Basics - Anfänger-Themen 3
D Mehrere verschiedene Farben pro fillRect Java Basics - Anfänger-Themen 3
M Verschiedene Werte in methoden Java Basics - Anfänger-Themen 3
K Verschiedene (Thread) Objekt-Positionen (int) in einem Array zusammenfassen Java Basics - Anfänger-Themen 3
J Verschiedene Rückgabetypen(int int char) Java Basics - Anfänger-Themen 10
S Datentypen Die verschiedene Java Datentypen [Anfänger] Java Basics - Anfänger-Themen 8
J OOP verschiedene Objekttypen ablegen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben