2017-04-04 4 views
2

Würde ein Arraylist besser sein als Vektor zu benutzen? Ich habe versucht, den Code in ArrayList für alle Vector-Werte ändern, aber ich bekomme einen Fehler in der Rückgabeanweisung am Ende meiner myTableModel-MethodeWie Arraylist verwenden, anstatt

Edit: zur Klarstellung habe ich ein paar Leute gehört und gelesen, dass die Verwendung der Vektoren ist 2017 schlecht (und dass ArrayList bevorzugt wird). Noch neue wirklich java so mein Denken nicht klar ist, wo es (von anderen Benutzern als deutlich darauf hingewiesen) :)

public static DefaultTableModel myTableModel(){ 
     csvData = new Vector(); 
    readInData(); 
    String header = csvData.get(0); 
    String[] columns = header.split("[,]"); 
    Vector<String> colNames = new Vector<>(); 
    int columnCount = columns.length; 
    for (int column = 0; column < columnCount; column++) { 
     colNames.add(columns[column]); 
    } 
    Vector<Vector<Object>> data = new Vector<>(); 


    for(int j = 1 ; j < csvData.size() ; j++){ 
     String row = csvData.get(j); 
     String[] elements = row.split("[,]"); 
      Vector<Object> vector = new Vector<>(); 
     for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) { 
      vector.add(elements[columnIndex]); 
     } 
     data.add(vector); 
    } 

    return new DefaultTableModel(data, colNames); 
+4

So adressieren Sie Ihre erste Frage: ["Vektor ist synchronisiert. Wenn keine threadsichere Implementierung benötigt wird, wird empfohlen, ArrayList anstelle von Vector zu verwenden."] (Https://docs.oracle.com/javase /7/docs/api/java/util/Vector.html) – domsson

+2

'neue DefaultTableModel (Daten, COLNAMES);' dies erfordert einen Vektor. funktioniert nicht mit arrayList – XtremeBaumer

Antwort

0

Sie bekommen Dinge falsch: Sie wählen diese oder jene Klasse nicht, weil Sie jemanden das oder das sagen hören. Sie entscheiden sich für eine bestimmte Klasse, weil sie Sinn macht. Weil es Ihnen hilft, Ihre Arbeit zu erledigen.

Beispiel: Wenn Sie auf die javadoc wenden für diese DefaultTableModel finden Sie: die Klasse tut keinen Konstruktor zur Verfügung stellen, die eine Arraylist akzeptiert! Also: Sie müssen Ihren Code nicht ändern. wenn das Ziel des Codes ist ein solches DefaultTableModel Objekt zu erstellen!

So, wie die andere Antwort richtig feststellt: manchmal die Antwort ist nicht eine Klasse mit „mehr“ Funktionen zu verwenden; aber um dein Problem genau zu betrachten; und sogar dynamische Vektoren durch Arrays fester Größe ersetzen. Weil sie den Job machen!

Aber als ein Schritt zurück; und im allgemeinen sprechen: dann hat die Verwendung von ArrayList anstelle von Vektor eine Reihe von Vorteilen; und im Jahr 2017; wenn Sie neuen Code schreiben; Ihr "Standard" wäre, List/ArrayList anstelle von Vector zu verwenden.

+0

Danke, dieser Kommentar trifft wirklich zu Hause mit, wo meine Meinung sollte sein, danke. – MrDon

1

Seien Sie sollte einfach sein!

+0

Sie möchten vielleicht nur ein bisschen darüber sprechen, was Ihr Code macht. Ja, es ist einfacher Code, aber trotzdem: Code-Only-Antworten sind nicht ideal! – GhostCat

Verwandte Themen