2015-11-10 52 views
0

我有一個向用戶建議書籍的項目,我計劃讓我的應用程序脫機。我的問題是:可以將我的大量字符串存儲在我的陣列上嗎?精確的多維數組。我正在計劃這樣做。將大量的字符串存儲在多維數組中

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

你們認爲什麼?我應該繼續這樣嗎?如果使用這個數據結構很慢,我還可以使用什麼來存儲數據?

+0

爲什麼不使用一些這方面的離線數據庫:

如下您可以添加圖書的圖書館嗎?您將獲得SQL的強大功能,並且會消耗更少的資源 – WeMakeSoftware

回答

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類可以使用包含HashMap的一個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); 
     } 
    } 
1

看看relational database

按照您的建議將數據存儲在數組中並不好。如果您的應用停止,您會發生什麼?您的所有數據都將丟失。

之後閱讀有關ORMs。對於Java來說,最流行的是Hibernate。使用的是你將獲取信息到類似以下的數據結構:

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 tools。使用它你可以生成很多有用的代碼,而不是自己編寫代碼。

+0

(或NetBeans IDE和eclipseLink [JPA/ORM]。)嵌入式數據庫,如[H2](http://www.h2database.com/html/main。 HTML)將無痛分發。 –

相關問題