我有一个项目会向用户推荐图书,并且我计划让我的应用程序脱机。我的问题是:在我的阵列上存储我的大量字符串是否可以?准确地说是多维数组。我打算这样做。
if(config.hasPath("alpha.first.name")) config.getString("alpha.first.name")
你们觉得怎么样?我应该这样继续吗?如果使用此数据结构很慢,我还可以用什么来存储数据?
答案 0 :(得分:1)
按照建议存储数据并不好 - 在数组中。如果您的应用程序停止,您认为会发生什么?您的所有数据都将丢失。
之后阅读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);
}
}