簡體   English   中英

將大量字符串存儲在多維數組中

[英]Store large amount of string in a multi-dimensional array

我有一個項目,該項目將向用戶推薦書籍,並且我計划使我的應用程序脫機。 我的問題是:可以在數組中存儲大量的String嗎? 確切地說是多維數組。 我正在計划以這種方式。

public bookLibrary() { 
    public static String[][] books = {{bookID}, 
{bookTitle}, {bookGenre}, {bookPlot}, {etc}}
}

你們有什么感想? 我應該這樣繼續嗎? 如果使用此數據結構的速度很慢,我還可以使用什么存儲數據?

看一下關系數據庫

按照您的建議將數據存儲在數組中是不好的。 如果您的應用停止運行,您會怎么辦? 您的所有數據都將丟失。

之后,閱讀有關ORM的信息 對於Java來說,最流行的一種是Hibernate 使用is可以將信息檢索到如下數據結構中:

List<Book> bookList = new ArrayList<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工具 使用它,您可以生成許多有用的代碼,而不必自己編寫。

如果必須使用Java ...建議將書數據封裝在Book類中。 您的圖書館可以將書籍存儲在HashMap以提供快速訪問和可伸縮性。 實際上,您可以將多個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);
    }
}

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM