对不起,我的英文不好。我会尽可能简单地解释我的问题;
我正在为一个网站做一个应用程序客户端。没有社交网络,但有博客。
现在我的应用程序下载每个请求的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