Я думаю, способ сохранить кучу данных, прочитанных из текстового файла, в коллекцию, которая является arraylist. После того, как я прочитал файл, мне нужно подумать, как его сохранить. Например, данные из текстового файла: Решение проблем с помощью C++: Уолтер Савич: 9780132773348: QA760-073: NON FICTION: 2 Вот часть моего кода:
Получить из текстового файла:
public void actionPerformed(ActionEvent arg0) {
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"Text and Data Files", "txt", "dat");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(MainMenu.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
String filename = chooser.getSelectedFile()
.getAbsolutePath();
readBooks(filename);
}
}
public void readBooks(String filename) {
try {
BufferedReader reader = new BufferedReader(new FileReader(filename));
int i = 0;
String line;
line = reader.readLine();
while (line != null && !line.equals("")) {
i++;
processBook(line);
line = reader.readLine();
}
System.out.println("" + i + " books read");
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
}
public void processBook(String line) {
int id = nextBookID;
nextBookID++;
String[] parts = line.split(":");
String title = parts[0];
String author = parts[1];
String bookISBN = parts[2];
String callNumber = parts[3];
String type = parts[4];
String noOfCopy = parts[5];
System.out.println("Creating book " + id);
// TODO: add create book and add to collection(s)
}
Вы должны начать с создания класса книги:
public class Book() {
private String title;
private String author;
private String bookISBN;
private String callNumber;
private String type;
private String noOfCopy;
public Book(String title,
String author,
String bookISBN,
String callNumber,
String type,
String noOfCopy) {
this.author = author;
this.bookISBN = bookISBN;
this.callNumber = callNumber;
this.type = type;
this.noOfCopy = noOfCopy;
}
}
У вас есть класс для ваших книг, которые вы можете сохранить в списке массивов книг. В вашем методе readBooks вы должны создать этот список массивов:
ArrayList<Book> bookList = new ArrayList<>();
Теперь вы используете этот список внутри метода processBook. Вы создаете свой объект Book с конструктором, который я определил ранее:
Book book = new Book(title, author, bookISBN, callNumber, type, noOfCopy);
Вы можете добавить эту книгу в свой массив:
bookList.add(book);
Это будет хранить ваши книги в коллекции.
Я бы создал класс. Например:
public class Book{
private int id;
private String title;
private String author;
private String ISBN;
private String callNumber;
private String type;
private String noOfCopy;
public Book(int id, String title, String author, String ISBN, String callNumber, String type, String noOfCopy) {
this.id = id;
this.title = title;
this.author = author;
this.ISBN = ISBN;
this.callNumber = callNumber;
this.type = type;
this.noOfCopy = noOfCopy;
}
<Getter and Setter>
}
и добавьте новый Bookinstance в Arraylist.
List<Book> books= new ArrayList<Book>();
books.add(new Book(id, parts[0], parts[1], parts[2], parts[3], parts[4], parts[5]))
Это можно сделать без кода разбиения на класс, вам просто нужно использовать объект Container (Like Vector of strings), переданный как второй аргумент функции readBooks и другие функции.
Но использование класса - лучший вариант, его более модульный, поддерживаемый и читаемый
Я думаю, что лучший подход будет заключаться в создании класса Book
, например:
public class Book {
private String title;
private String author;
private String bookISBN;
private String callNumber;
private String type;
private long noOfCopy;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getBookISBN() {
return bookISBN;
}
public void setBookISBN(String bookISBN) {
this.bookISBN = bookISBN;
}
public String getCallNumber() {
return callNumber;
}
public void setCallNumber(String callNumber) {
this.callNumber = callNumber;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public long getNoOfCopy() {
return noOfCopy;
}
public void setNoOfCopy(long noOfCopy) {
this.noOfCopy = noOfCopy;
}
}
Затем просто создайте новые объекты в processBook
:
Book tempBook = new Book();
tempBook.setTitle(title);
...
И добавьте их в List
, например:
List<Book> myList = new ArrayList<>();
...
myList.add(tempBook);