2016-04-24 5 views
0

Ich habe eine Datei mit Daten, es enthält die 5 Zeilen von Daten für Alben, und die sind 500 Alben. Der folgende Code speichert jede Zeile als neues Element, allerdings sollte ich 5 Zeilen als 1 Element speichern, ist das möglich und wie würde ich den Code ändern, um dies zu tun?Wie werden 5 Datenzeilen als 1 Element in einer ArrayList gespeichert?

String file_name = "Top500Albums.txt"; 
String line; 
ArrayList aList = new ArrayList(); 

try { 
    BufferedReader input = new BufferedReader(new FileReader(file_name)); 
    if (! input.ready()){ 
     throw new IOException(); 
    } 
    while ((line = input.readLine()) !=null) { 
     aList.add(line); 
    } 
    input.close(); 
} 
catch(IOException e) { 
    System.out.println(e); 
} 

int sz = aList.size(); 
for (int i=0; i< sz; i++) 
{ 
    System.out.println(aList.get(i).toString()); 
} 
+0

Was ist die Aufgabe, die Sie als nächstes ausführen möchten? –

+0

haben Sie versucht, ArrayList ()? –

+0

wie über die 'ArrayList.toArray()' Funktion –

Antwort

0

Wenn Sie eine Arraylist in ein Array zu ‚konvertieren‘ Sie folgende Stück Code verwenden können:

private String[] toArray(ArrayList<String> arrayList) { 
    String[] array = new String[arrayList.size()]; 
    arrayList.toArray(array); 
    return array; 
} 

Aber Sie sollten sich fragen, warum Sie mit einem Array arbeiten müssen. Eine ArrayList ist einfach eine Ansicht eines internen Arrays, so dass Suchvorgänge nicht wie bei anderen Listentypen durchgeführt werden. Mit der obigen Methode wird der doppelte Speicher (Sie kopieren das interne Array in einen neuen) verwendet Ihre ArrayList ist Müll gesammelt.

+0

das Array in einer HashMap verwenden Ich brauche das Array zu verwenden, um die Informationen in eine HashMap in der nächsten Aufgabe zu lesen. –

+0

Sie benötigen das Array in diesem Fall möglicherweise nicht, je nachdem, wie Sie die Elemente in der HashMap abtasten möchten. –

+0

Ich brauche 30 zufällige Alben, der Schlüssel ist die Position in der Liste, also wenn es das 6. Album wäre, wäre der Schlüssel 6, und der Wert wäre Album, Künstler, Plattenfirma und Jahr. –

1

Sie können Ihre Arraylist-Daten in String-Array wie diese

Ihre Arraylist

List<String> list = new ArrayList<String>(); 

und Sie können String-Array mit toArray() Methode

String[] stringArray = list.toArray(new String[0]); 
0

Wie zu speichern, umwandeln konvertieren 5 Datenzeilen als 1 Element in einer ArrayList?

Sie erstellen ein Java-Objekt, das 5 Zeilen enthält.

Da Sie uns nicht mitgeteilt haben, was die Inhalt dieser 5 Zeilen sind, ich benenne sie nur line1 bis line5. Sie sollten diesen Feldern sinnvollere Namen geben.

package com.ggl.testing; 

public class Album { 

    private final String line1; 
    private final String line2; 
    private final String line3; 
    private final String line4; 
    private final String line5; 

    public Album(String line1, String line2, String line3, String line4, 
      String line5) { 
     this.line1 = line1; 
     this.line2 = line2; 
     this.line3 = line3; 
     this.line4 = line4; 
     this.line5 = line5; 
    } 

    public String getLine1() { 
     return line1; 
    } 

    public String getLine2() { 
     return line2; 
    } 

    public String getLine3() { 
     return line3; 
    } 

    public String getLine4() { 
     return line4; 
    } 

    public String getLine5() { 
     return line5; 
    } 

} 

Dann erstellen Sie eine Liste der Albumobjekte.

List<Album> albumList = new ArrayList<>(500); 

Sie fügen der Liste ein Album so hinzu.

// Read five lines from the file 
albumList.add(new Album(line1, line2, line3, line4, line5)); 
0

Sie einen Zähler halten kann, wenn jedes neue Album Daten sehen gestartet

String file_name = "Top500Albums.txt"; 
    String line; 
    ArrayList aList = new ArrayList(); 

    int lineCounter = 1; 
    try { 
     StringBuilder albumData = new StringBuilder(); 
     BufferedReader input = new BufferedReader(new FileReader(file_name)); 
     if (!input.ready()) { 
      throw new IOException(); 
     } 
     while ((line = input.readLine()) != null) { 
      if(lineCounter%5 == 0) { 
       albumData.append(line); 
       aList.add(albumData.toString()); 
       albumData.setLength(0); 
      } else 
       albumData.append(line+"\n"); 
      lineCounter++; 
     } 
     input.close(); 
    } catch (IOException e) { 
     System.out.println(e); 
    } 

    int sz = aList.size(); 
    for (int i = 0; i < sz; i++) { 
     System.out.println(aList.get(i).toString()); 
    }