Я пытаюсь написать программу, которая поможет управлять некоторыми данными. Пока пользователь может создать новый файл, используя диалог «Новый файл». После того, как пользователь ввел некоторые параметры, я создаю новый экземпляр класса «Файл». Теперь мои вопросы: как я могу хранить в памяти несколько файлов (например, вкладки). Я думал об использовании своего рода ArrayList в качестве переменной в классе «Приложение». Что было бы идеальным решением здесь?Как сохранить список объектов в памяти для последующего использования
0
A
ответ
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()'. –
Если вы собираетесь записывать объекты на диск (зачем?), Начинайте здесь: https://docs.oracle.com/javase/tutorial/jndi/objects/serial.html –
нет, я знаю, как их хранить на диске , но мне нужен способ справиться с ними в памяти во время работы программы – Fullk33
У меня нет вашего вопроса. Если вы не записываете данные в файлы, все, что вы делаете, происходит в памяти. Все ваши объекты - только память. – GhostCat