Java 在多维数组中存储大量字符串

Java 在多维数组中存储大量字符串,java,Java,我有一个向用户推荐书籍的项目,我计划让我的应用程序离线。我的问题是:在数组中存储大量字符串可以吗?多维数组是精确的。我打算这样做 public bookLibrary() { public static String[][] books = {{bookID}, {bookTitle}, {bookGenre}, {bookPlot}, {etc}} } 你们觉得怎么样?我应该继续这样吗?如果使用此数据结构速度较慢,我还可以使用什么来存储数据?查看 按照您的建议将数据存储在数组中是

我有一个向用户推荐书籍的项目,我计划让我的应用程序离线。我的问题是:在数组中存储大量字符串可以吗?多维数组是精确的。我打算这样做

public bookLibrary() { 
    public static String[][] books = {{bookID}, 
{bookTitle}, {bookGenre}, {bookPlot}, {etc}}
}
你们觉得怎么样?我应该继续这样吗?如果使用此数据结构速度较慢,我还可以使用什么来存储数据?

查看

按照您的建议将数据存储在数组中是不好的。如果你的应用停止了,你认为会发生什么?您的所有数据都将丢失

在那之后,我读到了。对于Java来说,最流行的方法之一是。使用is,您可以将信息检索到如下数据结构中:

List bookList=new ArrayList();
这本书是这样的:

公共课堂教材{
私有整数bookID;
私有字符串书名;
//等,阅读有关外键识别的信息,例如。
//然后跟随getter/setter
}

如果使用,请尝试安装。使用它,您可以生成大量有用的代码,而不是自己编写。

如果您必须使用Java。。。我建议您将书籍数据封装在
book
类中。您的图书馆可以将书籍存储在
HashMap
中,以提供快速访问和缩放功能。事实上,您可以同时使用多个哈希图,以便根据书的任何一个特征(例如作者或流派)访问该书

Book
类可能如下所示:

class Book{

    HashMap<String, String> features;

    public Book(){
        this.features= new HashMap<String,String>();
    }

    public HashMap<String, String> getFeatures() {
        return features;
    }

    public String addFeature(String key,String value){
        return features.put(key, value);
    }

    public void addFeatures(HashMap<String, String> newFeatures){
        this.features.putAll(newFeatures);
    }
}
所以,要阅读一本书,你可以打电话

public Book getBook(String featureType,String key){
    return library.get(featureType).get(key);
}
featureType
字符串指定您是否按作者、流派、描述等查找图书。
键是特定作者的姓名。例如,要获取Bob Smith的一本书,可以使用
getBook(“author”、“Bob Smith”)

您可以按如下方式向库中添加书籍:

    public void addBookToLibrary(Book book){
        HashMap<String,String> bookFeatures = book.getFeatures();
        for(String featureType : bookFeatures.keySet()){
            HashMap<String,Book> libraryFeatureMap = library.get(featureType);
            libraryFeatureMap.put(bookFeatures.get(featureType), book);
        }
    }
公共作废addBookToLibrary(图书){
HashMap bookFeatures=book.getFeatures();
对于(字符串特征类型:bookFeatures.keySet()){
HashMap libraryFeatureMap=library.get(featureType);
libraryFeatureMap.put(bookFeatures.get(featureType),book);
}
}

为什么不为此使用一些脱机数据库?您将获得SQL的强大功能,它将消耗更少的资源(或NetBeansIDE和eclipseLink[JPA/ORM])。像这样的嵌入式数据库分发起来会很轻松。
    public void addBookToLibrary(Book book){
        HashMap<String,String> bookFeatures = book.getFeatures();
        for(String featureType : bookFeatures.keySet()){
            HashMap<String,Book> libraryFeatureMap = library.get(featureType);
            libraryFeatureMap.put(bookFeatures.get(featureType), book);
        }
    }