對不起,我的英文不好。我會盡可能簡單地解釋我的問題;
我正在爲一個網站做一個應用程序客戶端。沒有社交網絡,但有博客。
現在我的應用程序下載每個請求的50個員額以下信息:
Java Android中的ArrayList性能
標題,作者,發表的類型,鏈接
它們存儲到ArrayList中以這樣的方式:
Title1,Author1,Type1,Link1,Title2,Author2,Type2,Link2 ... Title50,Author50,Type50,Link50
所以,我在ArrayList中有4 * 50 = 200個元素。
(請注意,此解析網頁時使用此ArrayList)。今後,我想存儲一些額外的信息,比如帖子的數據,喜歡的數量,鏈接到頭像等等。據我所知,50個帖子會要求在ArrayList中有600-800個元素。我擔心這會顯着降低我的Android應用程序的性能。
所以,問題是:你會如何建議存儲解析的數據?
在此先感謝。
我將展示一些代碼,以更好地說明問題:
在解析網頁與Jsoup我做以下的事情:
post_data = new ArrayList<String>();
for (Element e : entries) {
post_data.add(e.select("title").text()); // title
post_data.add(e.select("author name").text()); // author
post_data.add(e.select("category").attr("term").toString()); // type
Elements links_int = e.select("link");
for (Element g : links_int) {
if (g.attr("rel").toString().equals("self")) {
post_data.add(g.attr("href").toString()); // post link (if there's one)
} else { continue;
}
}
正確的頁面解析後,我補我的數據scructure命名爲「項目」 (和數據結構來形成的ListView):
for (int i = 0; i < (post_data.size()); i += 4) {
items.add(new WhatsNew_post_Item(
WhatsNew.this.post_data.get(i),
WhatsNew.this.post_data.get(i + 1),
WhatsNew.this.post_data.get(i + 2),
WhatsNew.this.post_data.get(i + 3)));
}
您是否希望信息永久或暫時保存? – Kakarot
「恐怕這會顯着降低我的Android應用程序的性能。」你試過了嗎?對於ArrayList,800個元素非常小。沒有*測試*就沒有任何性能問題的「恐懼」。我會更關心你的數據表示 - 聽起來你應該有一個'ArrayList',其中每個'Post'包含標題,作者,類型和鏈接...而不是'ArrayList '中的4個元素'每篇文章。 –
此外,在你的情況下,如果你知道你將收到約50個帖子,那麼你可以初始化你的數組列表大小爲50,以避免不必要的時間來擴大數組列表時的數組列表的數目 posts = new ArrayList (50) ; –
Kakarot