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

时间:2015-11-10 07:51:38

标签: java

我有一个项目会向用户推荐图书,并且我计划让我的应用程序脱机。我的问题是:在我的阵列上存储我的大量字符串是否可以?准确地说是多维数组。我打算这样做。

if(config.hasPath("alpha.first.name")) config.getString("alpha.first.name")

你们觉得怎么样?我应该这样继续吗?如果使用此数据结构很慢,我还可以用什么来存储数据?

2 个答案:

答案 0 :(得分:1)

请看relational database

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

之后阅读ORMs。对于Java,最流行的是Hibernate。使用是您将检索信息到如下所示的数据结构:

List<Book> bookList = new ArrayList<Book>();

Book 就像:

public class Book {
    private Integer bookID;
    private String bookTitle;
    //etc, read about foreign key declration e.g.
    //then follow getters/setters
}

如果您使用Eclipse IDE,请尝试安装Hibernate Jboss tools。使用它可以生成许多有用的代码,而不是自己编写。

答案 1 :(得分:1)

如果必须使用Java ...我建议您将书籍数据封装在Book类中。您的图书馆可以将图书存储在HashMap中,以提供快速访问和扩展能力。实际上,您可以一起使用多个HashMaps,以允许您根据其任何一个功能(例如作者或流派)访问该书。

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

您的Library类可以使用HashMaps的HashMap:

HashMap<String,HashMap<String,Book>> library;

因此,要访问图书,请致电

public Book getBook(String featureType,String key){
    return library.get(featureType).get(key);
}

featureType字符串指定您是按作者,流派,描述等查找图书。key是特定作者的姓名。例如,要获得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);
        }
    }