1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Problem mit LinkedList

  • leny
  • 10. April 2005 um 19:19
  • Unerledigt
  • leny
    5
    leny
    Mitglied
    Reaktionen
    2
    Punkte
    237
    Beiträge
    40
    • 10. April 2005 um 19:19
    • #1

    Hallo Java Experten-

    ich habe versucht eine LinkedList aus Arrays zu erstellen. Das Erstellen funktioniert auch super, aber beim auslesen liefert er mir nur Objects zurück.

    Frage: Wie kann ich diese Objects wieder in Arrays verwandeln (die sie auch korrekterweise noch sind- zumindest liefert object.getClass().getName() den korrektern Wert. Mit cast hab ich schon alles möglich probiert, leider erfolglos... Ein einfaches Zuweisen funktioniert auch nicht...

    Ich hab dann dasselbe auch mit einer LinkedList aus LinkedLists (statt Arrays) probiert - selbes Problem.

    irgendwelche Ideen?

    Dankeschön schon mal.

  • JohnFoo
    20
    JohnFoo
    Mitglied
    Reaktionen
    61
    Punkte
    4.231
    Beiträge
    761
    • 10. April 2005 um 19:32
    • #2

    Bitte den Code posten damit deine Frage klar wird. (Bitte CODE-Tag benutzen).

  • ponifaax
    4
    ponifaax
    Mitglied
    Punkte
    170
    Beiträge
    30
    • 10. April 2005 um 20:18
    • #3

    kenn mich zwar nicht ganz aus bei deiner frage aber wenn du zb eine ArrayList von Person Objekte in ein Person-Array umwandeln willst mach es so:

    Code
    ArrayList l = new ArrayList(); // assume Person objects in the list
    // fill list
    Person[] pa = (Person[])l.toArray(new Person[l.size()]);

    wennst java 1.5 nimmst hast sogar noch type safty bei der arraylist.....

    hth ponifaax

  • leny
    5
    leny
    Mitglied
    Reaktionen
    2
    Punkte
    237
    Beiträge
    40
    • 10. April 2005 um 20:22
    • #4

    danke für die schnelle antwort!

    Also hier erstelle ich die LinkedLIste:

    Code
    LinkedList history=new LinkedList();
    
    
    			int[] moves=new int[3];
    
    
    			moves[0]=toInt(field1);
    			moves[1]=toInt(field2);
    			moves[2]=toInt(field3);
    
    
    			history.add(moves);
    
    
    			historytable=createTable(history);
    Alles anzeigen


    und das auslesen hab ich bisher auf 2 varianten probiert (die beide nicht funktionieren):

    V1 (Versuch, gleich die Arrays rauszunehmen):

    Code
    for(int i=0; i<history.size(); i++){
    
    
    				    int[] values=new int[3];
    				    values=history.get(i);
    
    
    				    for(int j=0; j<=2; j++){
    					    int value=values[j];
    					    doSomething(value);
    					}
    				}
    Alles anzeigen

    liefert:

    Code
    Mastermind.java:90: incompatible types
    found   : java.lang.Object
    required: int[]
    				    values=history.get(i);

    ja, und dann hab ichs noch irgendwie mit Class und casten versucht, ich hoffe das ist jetzt richtig reproduziert:

    V2:

    Code
    for(int i=0; i<history.size(); i++){
     
    				    int[] values=new int[3];
    				    Object o=new Object();
    				    o=history.get(i)
    				    Class c=o.getClass();
    				    values=c.cast(o);
     
    				    for(int j=0; j<=2; j++){
    					    int value=values[j];
    					    doSomething(value);
     					}
     				}
    Alles anzeigen

    das liefert dasselbe:

    Code
    Mastermind.java:101: incompatible types
    found   : java.lang.Object
    required: int[]
    					    int[]values=c.cast(o);

    ich hoffe das war einigermassen verständlich...

  • leny
    5
    leny
    Mitglied
    Reaktionen
    2
    Punkte
    237
    Beiträge
    40
    • 10. April 2005 um 20:28
    • #5

    OK ich versuchs nochmal besser zu formulieren:

    Ich habe eine Liste die aus Array-Objekten besteht. Jedes Element der LIste ist ein Array.

    Wenn ich eines dieser Arrays aus der Liste rausnehm, dann krieg ich ein Object, mit dem ich nix anfangen kann weil ich Daten aus meinen Arrays brauch...

    Problem: wie kann ich das Object, das ich aus der Liste geholt habe (und das auch noch immer ein Array ist - hab ich mit getClass().getName() oder so ähnlich schon überprüft...), wieder in ein Array verwandeln?

    bzw gibt es eine einfachere Methode sowas zu konstruieren? (Ziel ist es eine Tabelle zu erstellen die beliebig viele Zeilen haben kann, aber immer genau 3 Spalten, daher hab ich mir gedacht ich nehm für die Spalten ein 3stelliges Array und für die Zeilen eine Liste die eben diese Arrays enthält)

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 11. April 2005 um 00:14
    • #6
    Java
    import java.util.LinkedList;
    import java.util.List;
    
    
    import junit.framework.Assert;
    import junit.framework.TestCase;
    
    
    /**
    Das Problem: java weiss nicht, das das objekt aus deiner liste ein 
    array aus integern ist.
    */
    public class CastingTest extends TestCase {
    
    
      /** ERSTE LÖSUNG: 
      wenn du das object aus der liste nimmst sagst du bescheid, 
      um was es sich handelt (UpCasting)*/
      public void testUpCasting(){
        List list = new LinkedList();
        list.add(new int[]{1,2,3});
        int[] arr = (int[]) list.get(0); // !!!
        Assert.assertEquals(arr[1],2);
      }
    
      /** ZWEITE LÖSUNG: 
      du  erstellst nicht eine liste, die jede art von objekt 
      aufnehmen kann, sondern eine, die nur arrays aus 
      integern akzeptiert(generics). */ 
      public void testGenerics(){
        List<int[]> list = new LinkedList<int[]>(); // !!!
        list.add(new int[]{1,2,3});
        int[] arr = list.get(0);
        Assert.assertEquals(arr[1],2);
      }
    
    }
    Alles anzeigen


    die zweite lösung ist besser (übersichtlicher und weniger fehleranfällig). funktioniert aber erst ab java > 1.5.

    lg, Benjamin Ferrari, bookworm.at

  • leny
    5
    leny
    Mitglied
    Reaktionen
    2
    Punkte
    237
    Beiträge
    40
    • 11. April 2005 um 20:04
    • #7

    Vielen Dank!

    Werd gleich ausprobiern...

  • Samer
    1
    Samer
    Mitglied
    Punkte
    10
    Beiträge
    2
    • 9. Mai 2005 um 19:38
    • #8

    Tach jungs, wollte fragen, ob jemand schon mit eclipse 3 c/c++-header-Datei erstellt hat.
    Habe das Keyword "native" in java datei benutzt und wollt diesen header erstellen aber leider konnte ich nicht.
    was ich weiß, dass es die sache mit javah.exe geht aber leider konnte es mit eclipse 3 noch nicht erreichen.
    Hat jemand eine Idee?

    Grüße.

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 9. Mai 2005 um 20:02
    • #9
    Zitat von Samer

    Tach jungs, wollte fragen, ob jemand schon mit eclipse 3 c/c++-header-Datei erstellt hat.
    Habe das Keyword "native" in java datei benutzt und wollt diesen header erstellen aber leider konnte ich nicht.
    was ich weiß, dass es die sache mit javah.exe geht aber leider konnte es mit eclipse 3 noch nicht erreichen.
    Hat jemand eine Idee?

    Grüße.

    Hallo Samer!

    1. ist das hier wohl ziemlich offtopic. :confused:

    2. um eine c/c++ header datei mit eclipse zu erstellen legst du aus eclipse heraus eine neue datei mit der endung .h an und fertig. :)

    3. um aus einer java application auf nativ compilierten code zuzugreifen, musst du dich in das Java Native Interface einlesen.

    lg, Benjamin Ferrari, bookworm.at

  • Samer
    1
    Samer
    Mitglied
    Punkte
    10
    Beiträge
    2
    • 16. Mai 2005 um 16:29
    • #10

    Hi Jungs!
    Ich habe die pdf-Dateien :
    http://www.cs.umanitoba.ca/~eclipse/7-JNI.pdf
    http://www.cs.umanitoba.ca/~eclipse/8-JNI.pdf
    so richtig gelesen und habe alles verstanden und habe die installation hingekriegt aber als ich das beispiel "Hallo World"
    in 8-JNI.pdf implementieren wollte hat es nicht geklappt:
    ich habe die Hello.java und makefile erstellt und sollt normalerweise nach der Speicherung die header-datei erstellt werden aber leider kamm die nicht raus und hatte ich eine Fehlermeldung "lauching failed".

    Könntet ihr bitte weiter helfen, es ist sehr wichtig und eilig.
    Grüße

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 22. Mai 2005 um 21:40
    • #11
    Zitat von Samer

    Hi Jungs!
    Ich habe die pdf-Dateien :
    http://www.cs.umanitoba.ca/~eclipse/7-JNI.pdf
    http://www.cs.umanitoba.ca/~eclipse/8-JNI.pdf
    so richtig gelesen und habe alles verstanden und habe die installation hingekriegt aber als ich das beispiel "Hallo World"
    in 8-JNI.pdf implementieren wollte hat es nicht geklappt:
    ich habe die Hello.java und makefile erstellt und sollt normalerweise nach der Speicherung die header-datei erstellt werden aber leider kamm die nicht raus und hatte ich eine Fehlermeldung "lauching failed".

    Könntet ihr bitte weiter helfen, es ist sehr wichtig und eilig.
    Grüße

    Alles anzeigen

    Hallo Samer!

    Also wenn du uns nur diese pdf zeigst, die vermutlich richtigen code enthalten, wie sollen wir dann wissen, wo du einen fehler gemacht hast?

    wenn das problem noch aktuell ist:

    • mach eine shell auf (cmd/bash/...)
    • lass dir die gesamte verzeichnisstruktur deines projektes ausgeben(mit dir/ls)
    • führe die jeden einzelnen schritt in der konsole aus bis du auf deinen fehler triffst
    • kopiere das gesamte output der konsole, also von der verzeichnisstruktur bis hin zu der fehlermeldung hier ins forum
    • [ CODE] tags nicht vergessen!


    so können wir nämlich nachvolziehen, was du machst und wo es schiefgeht.

    lg, Benjamin Ferrari, bookworm.at

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung