2013-07-17 33 views
1

這個故事是,我現在正在爲Android編程。Java - 有沒有其他的第三方Collections(ArrayList等)庫?

我發現ArrayList真的很慢,特別是當用於listviews的適配器時,因爲我的項目需要排序和搜索。 那裏有其他的圖書館嗎?

非常感謝。

+2

定義*「很慢」 *。也許你想看看JNI並使用本地庫。 – m0skit0

+0

你有沒有嘗試過http://code.google.com/p/guava-libraries/它有很多與java類相比的優化? – sandrstar

+0

類似的問題:http://stackoverflow.com/questions/8324805/java-android-what-is-faster-than-arraylist –

回答

12

至於其他的答案說,也有一些另類收藏庫。

但是,在覈心問題可能不是圖書館,而是你自己的收藏選擇。使用不同的庫,不會改變這一點。

在Java和Android中,您有大量的收集選項供您選擇,所有這些選項都有不同的專業和不利因素。

這是一個長篇大論的寫作方式,所以除非你完全記下你想要做什麼,否則沒有人能真正告訴你哪一個選擇最好。 但是,爲了給你一個小小的開始,你可以看看這個;

collection tree

+0

哇!我喜歡這張圖!非常感謝!事實上,我正在爲Android開發一個XMPP聊天應用程序。主要的性能問題在好友列表屏幕上。 –

+0

爲什麼會有這樣的性能問題?我想它只是你從ContentProvider中獲得的聯繫人對象列表,你在ListView中顯示..即使有人擁有數百個聯繫人也不應該是一個問題,因爲適配器負責僅加載可見一些+額外的平滑滾動.. –

+0

這是因爲我使用的是第三方庫(asmack),聯繫人列表以集合的形式給出,代碼如[code] Collection entries = connection.getRoster()。getEntries(); [/ code] ... –

0

您可以使用現有的Java集合進行排序和搜索。我認爲沒有其他需要。

但還有其他選擇,比如Google Collections和Apache Commons的東西。

0

ArrayList中的缺點是,你不能存儲原語吧。
與數組相比,導致更多的內存使用。
在你有非常大的陣列(例如>十萬或十萬elemts) 的情況下,越來越多的原始陣列通常是更好的解決方案。

本文介紹了實現自己ArrayListLong使用基本類型: