2015-09-14 52 views
1

所以這一定是以前被問過,但我不能找到有用的東西,所以斯里。效率,資源 - 存儲所有數據在一個或多個ArrayList

這是我的場景: 我想將有關項目的信息,價格和其他值存儲在ArrayList中。假設我們完成後,我們在列表中有大約10,000個項目。我的問題是,緊固件/什麼方式可以減少系統資源,從而使應用程序運行效率最高。

我應該: 使用一個ArrayList中的所有數據,如該

ArrayList<String> items = new ArrayList<String>(); 
items.add("name;price;from"); 

String[] seperated = items.get(i).split(";"); 
seperated[0]... 

然後還要把它分解每當我需要從中讀取數據。 (將每次客戶正在搜索一個項目,我可以然後只拆分符合搜索條件的條目)

或者我應該使用3個ArrayLists每個10.000項目。

在此先感謝:)

回答

0

我不是你的規範明確的100%,但如果是我,我會實現一個Item對象:

class Item { 
    private String _id; 
    private String _name; 
    private String _price; 
    private String _from; 

    //getters,setters,etc. 
} 

然後有一個HashMap通過ID來查找Item秒。

HashMap<String,Item> items = new HashMap<>(); 

你就可以用你所有的項目清單:

items.values(); 

或者,您也可以通過ID執行O(1)查找:

items.get(someId); 
+0

我會說去。不幸的是,如果可能的話,我不知道。 Im從ArrayAdapter類擴展到顯示ListView中的項目,並沒有線索我應該怎麼做 – user5334993

+0

嗯,它是*可能*。過去我已經實施了這樣的解決方案。問題是它是否適合你的問題。以這種方式使用'HashMaps'和對象在內存上既高效又簡單。所以這個解決方案滿足了兩個要求,而不是犧牲另一個。 – nukeforum

2

更快的解析 - 多個數組。
使用較少的內存 - 單個陣列。

這取決於您期望陣列有多大。正確的方法是隻加載所需數量的項目。例如。如果在屏幕上看到10個項目,則會在刪除/請求時載入30個(未)載入更多內容。