2016-07-04 6 views
0

Я пытаюсь написать программу, которая поможет управлять некоторыми данными. Пока пользователь может создать новый файл, используя диалог «Новый файл». После того, как пользователь ввел некоторые параметры, я создаю новый экземпляр класса «Файл». Теперь мои вопросы: как я могу хранить в памяти несколько файлов (например, вкладки). Я думал об использовании своего рода ArrayList в качестве переменной в классе «Приложение». Что было бы идеальным решением здесь?Как сохранить список объектов в памяти для последующего использования

+0

Если вы собираетесь записывать объекты на диск (зачем?), Начинайте здесь: https://docs.oracle.com/javase/tutorial/jndi/objects/serial.html –

+0

нет, я знаю, как их хранить на диске , но мне нужен способ справиться с ними в памяти во время работы программы – Fullk33

+1

У меня нет вашего вопроса. Если вы не записываете данные в файлы, все, что вы делаете, происходит в памяти. Все ваши объекты - только память. – GhostCat

ответ

1

Вы можете использовать карту для хранения файлов в памяти.

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; 
    } 

} 

Затем в главном классе вы можете просто использовать класс FileStorage для управления файлами

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"); 
} 

Сложность для доступа или хранения файла O (1). Это лучше, чем список для доступа к файлу.

1

Да, вы можете просто использовать List для хранения экземпляров

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

Хороший ответ с большинством приведенных операций. Для новичков в java: 'maxfiles' более или менее неактуальен, это начальный размер/емкость массива. Вы можете это исключить. Он не имеет ничего общего с 'size()'. –

Смежные вопросы