Elemente aus ArrayList in Array speichern

Diskutiere Elemente aus ArrayList in Array speichern im Allgemeine Java-Themen Bereich.
H

Hieu

Hallo Leute ich hätte mal eine ganz einfache Frage.Wie kann ich alle Elemente aus einer z.b String ArrayList in ein Array speichern,aber auch so das die Länge des Arrays der Länge der Arraylist entspricht.
 
Zuletzt bearbeitet:
T

TM69

Hallo Leute ich hätte mal eine ganz einfache Frage.Wie kann ich alle Elemente aus einer z.b String ArrayList in ein Array speichern,aber auch so das die Länge des Arrays der Länge der Arraylist entspricht.
Warum benutzt du nicht die .toArray - Funktion der ArrayList?
Also in der Form:
Code:
List<String> stringlist = new ArrayList<String>();
stringlist.add("String1");
stringlist.add("String2");
stringlist.add("String2");
 
String[] strings = stringlist.toArray();
 
Zuletzt bearbeitet:
H

Hieu

Warum benutzt du nicht die .toArray - Funktion der ArrayList?
Naja also ich hab es mal so probiert
Code:
ArrayList <String[]> row1 = new ArrayList<String[]>();
     String[][] row = row1.toArray();
aber da steht dann immer als Fehler cannot convert from from Object[] to String[][] oder habe ich einen Denkfehler? Habs auch schon gecastet aber da kommt dann wenn ich es ausführe eine Castexception
 
Zuletzt bearbeitet:
T

TM69

Naja also ich hab es mal so probiert
Code:
ArrayList <String[]> row1 = new ArrayList<String[]>();
     String[][] row = row1.toArray();
aber da steht dann immer als Fehler cannot convert from from Object[] to String[][] oder habe ich einen Denkfehler?
Ja hast du :D s. meinen Code String[] nicht String[][],weil ArrayList<String> ist String[] und nicht String[][]

um genau zu sein. Ein toArray() liefert eine Object[] zurück. Die Funktion verfügt aber über einen Übergabeparameter

public <T> T[] toArray(T[] a)

dem entsprechend muss es heissen:
Code:
String[] stringArray = list.toArray(new String[0]);
weil ohne Übergabe parameter wird es zu Object[] konvertiert.

BTW ist es korrekt, das es eine ArrayList<String[]> ist? Also ein String[][]?
 
Zuletzt bearbeitet:
H

Hieu

Ja hast du :D s. meinen Code String[] nicht String[][],weil ArrayList<String> ist String[] und nicht String[][]

um genau zu sein. Ein toArray() liefert eine Object[] zurück. Die Funktion verfügt aber über einen Übergabeparameter

public <T> T[] toArray(T[] a)

dem entsprechend muss es heissen:
Code:
String[] stringArray = list.toArray(new String[0]);
weil ohne Übergabe parameter wird es zu Object[] konvertiert.

BTW ist es korrekt, das es eine ArrayList<String[]> ist? Also ein String[][]?
Jap also am Ende möchte ich ein Array haben wo String arrays drinne sind. Wie würde der Code dann aussehen?
 
T

TM69

Alternativ bleibt dir natürlich immer noch durch z.B. Iteration eine eigene Copy-Funktion zu schreiben :D
 
I

insert2020

Viel Sinn macht es nicht... aber egal. Ich habe es einfach mal >decapsulate< genannt, das Wort gibt es wahrscheinlich gar nicht:
Java:
	public static String[][] decapsulate(List<List<String>> list) {
		return list.stream().map(l -> l.toArray(new String[0])).toArray(String[][]::new);
	}

	public static void main(String[] args) throws IOException {
		List<List<String>> table = List.of(List.of("A", "B"), List.of("3", "4"));
		System.out.println(Arrays.deepToString(decapsulate(table)));
	}
Das entfaltet einfach eine geschachtelte String-Liste in ein zweidimensionales Array mit Stream-Mitteln.
 
H

Hieu

Code:
package Klassen;

import java.io.IOException;
import java.util.ArrayList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class GAEB {
 public static void main(String[] args)
 {


GUI aa = new GUI();


 }
 public static String[][] Tabellefüllen() {
    
     ArrayList<String[]> row1 = new ArrayList<String[]>();
     String[][] row = row1.toArray(new String[4][100]);
    
    
    
     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    
    
     try {
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse("Muster-Ausschreibungs-LV-ErdMauerBetonarbeiten-xml32.x83");
        NodeList BoQBodyList =   doc.getElementsByTagName("BoQBody");
        for (int i = 0; i < BoQBodyList.getLength();i++) {
           Node p = BoQBodyList.item(i);
           if (!p.getFirstChild().getLastChild().getFirstChild().getNodeName().equals("Itemlist")&& !p.getFirstChild().getNodeName().equals("Itemlist")) {

                Element BoQBody1 = (Element) p;
                NodeList BoQCtgyList = BoQBody1.getChildNodes();
                
                for(int j = 0; j < BoQCtgyList.getLength();j++) {
                    Node a = BoQCtgyList.item(j);
                    //BoQCtgy erste Ebene
                    Element BoQCtgy = (Element) a;   
                    //RNoPart erste Ebene
                    String RNoPart1 = BoQCtgy.getAttribute("RNoPart");
                    
                    String Span1 = BoQCtgy.getFirstChild().getFirstChild().getFirstChild().getTextContent();
                    System.out.println(RNoPart1+ "."+ Span1);
                    String[] a1 = {RNoPart1,"","",Span1};
                    row1.add(a1);
                    //Ende erste Ebene
                    NodeList BoQCtgy2List = BoQCtgy.getLastChild().getChildNodes();
                    for (int q = 0;q< BoQCtgy2List.getLength();q++) {
                        
                        Node c = BoQCtgy2List.item(q);
                        //BoQCtgy zweite Ebene
                        Element BoQCtgy2 = (Element) c;
                        String RNoPart2 = BoQCtgy2.getAttribute("RNoPart");
                        String Span2 = BoQCtgy2.getFirstChild().getFirstChild().getFirstChild().getTextContent();
                        
                        System.out.println(RNoPart1 +"."+ RNoPart2 + Span2);
                        String[] a2 = {(RNoPart1+"."+RNoPart2),"","",Span2};
                        row1.add(a2);
                        //Ende zweite Ebene
                    NodeList itemList =     BoQCtgy2.getLastChild().getFirstChild().getChildNodes();
                        for (int z = 0; z<itemList.getLength();z++) {
                            Node w = itemList.item(z);
                            //Item
                            Element item = (Element) w;
                        //RnoPart 3
                        String RNoPart3  = item.getAttribute("RNoPart");
                        NodeList QtyList = item.getElementsByTagName("Qty");
                        for (int jj = 0;jj< QtyList.getLength();jj++) {
                            Node kk = QtyList.item(jj);
                            Element Qty = (Element) kk;
                             //Qty Text
                            String QtyText = Qty.getTextContent();
                             NodeList qq = item.getElementsByTagName("QU");
                             for(int rr = 0; rr<qq.getLength();rr++) {
                                 Node aa = qq.item(rr);
                                 Element qu = (Element) aa;
                                 //QU Text
                                String QU =  qu.getTextContent();
                                String Span3 = item.getLastChild().getLastChild().getLastChild().getFirstChild().getFirstChild().getFirstChild().getFirstChild().getTextContent();
                                System.out.println(RNoPart1+"."+RNoPart2+"."+RNoPart3+",  "+QtyText+",  "+QU+",  "+Span3);
                                String[] a3 = {(RNoPart1+"."+RNoPart2+"."+RNoPart3),QtyText,QU,Span3};
                                //Ende dritte Ebene
                                row1.add(a3);
                                
                                
                                
                             }
                            
                        }
                        
                        
                    
                            
                        }
                        
                        
                    }
                    
                    
                            
                }
                
              


           }




       }



     } catch (ParserConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SAXException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return row;
}
}
also was wir halt probieren wollen ist wir bekommen quasi mehrere Variabeln mithilfe von for schleifen diese wollen wir halt für jeden Durchgang dieser for Schleife in ein Array speichern und dieses Array dann in ein weiteres Array aber das funktioniert mit Arrays nicht weil dann nur die letzte Variable in das Array gespeichert wird. deswegen wollen wir arraylists verwenden und diese dann in ein Array umwandeln. Das Arrayformat brauchen wir weil wir mit diesen Daten quasi ein JTabel füllen wollen
 
I

insert2020

Sag doch gleich, dass du Tabellendaten für eine JTable brauchst. :D
 
Thema: 

Elemente aus ArrayList in Array speichern

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben