2016-07-04 24 views
0

Ich versuche, ein Programm zu schreiben, mit dem Sie einige Daten verwalten können. Bisher kann der Benutzer eine neue Datei mit einem Dialog "Neue Datei" erstellen. Nachdem der Benutzer einige Parameter eingegeben hat, erstelle ich eine neue Instanz einer "Datei" -Klasse. Meine Fragen jetzt ist: Wie kann ich mehrere Dateien (wie Tabs) im Speicher speichern. Ich dachte über eine Art ArrayList als eine Variable in einer "Application" -Klasse. Was wäre eine ideale Annäherung hier?So speichern Sie eine Liste von Objekten im Speicher für die spätere Verwendung

+0

Wenn Sie beabsichtigen, Objekte auf die Festplatte (warum?) Zu schreiben, starten Sie hier: https://docs.oracle.com/javase/tutorial/jndi/objects/serial.html –

+0

nein, ich weiß, wie Sie sie auf der Festplatte speichern , aber ich brauche einen Weg, um sie im Speicher zu behandeln, während das Programm läuft – Fullk33

+1

Ich bekomme Ihre Frage nicht. Solange Sie keine Daten in Dateien schreiben, geschieht alles, was Sie tun, im Speicher. Alle Ihre Objekte sind nur Speicher. – GhostCat

Antwort

1

können Sie verwenden, um eine Karte Ihre Dateien im Speicher zu speichern.

public class FileStorage{ 

    Map<String, File> fileMap; 

    public FileStorage(){ 
     fileMap = new HashMap<String, File>(); 
    } 

    public void addNewFile(File f, String fileName){ 
     if (fileMap.get(fileName) != null){ 
      // Do something if you do not want to erase previous file... 
     else{ 
      fileMap.put(fileName, f); 
     } 
    } 

    public File getStoredFile(String fileName){ 
     File f = fileMap.get(fileName); 
     if (f==null){ 
      // alert user the file is not found. 
     } 
     return f; 
    } 

} 

dann in der Hauptklasse können Sie einfach die Filestorage-Klasse verwenden, um Ihre Dateien

public static void main(String[] args){ 
    FileStorage fileStorage = new FileStorage(); 

    // User create a new file 
    File file1 = new File(); 

    fileStorage.addNewFile(file1, "file1"); // name can also be file1.getName() 

    [...] 

    // Later you can access the file 
    File storedFile = fileStorage.getStoredFile("file1"); 
} 

Die Komplexität Datei ist O (1) für den Zugriff auf oder speichern zu verwalten. Es ist besser als eine Liste für den Zugriff auf eine Datei.

1

Ja, können Sie einfach List verwenden Instanzen zu speichern

int maxfiles = 150; //You can set the length of the list, by default is 10 

List<File> files = new ArrayList<File>(maxfiles); 

//Your multiple files here 
File file1 = null; 
File file2 = null; 
File file3 = null; 

//Simply add it to the List 
files.add(file1); 
files.add(file2); 
files.add(file3); 

//And remove it by 
files.remove(0); //Index 

//Or remove all 
files.clear(); 
+0

Schöne Antwort mit den meisten Operationen gegeben. Für Anfänger in Java: 'maxfiles' ist mehr oder weniger irrelevant, es ist die ursprüngliche Array-Größe/Kapazität. Du kannst es weglassen. Es hat nichts mit 'size()' zu tun. –

Verwandte Themen