我們怎樣才能删除重複項從清單與guavaAPI的幫助? 目前,我下面這個:
本文位址 :CodeGo.net/499388/
-------------------------------------------------------------------------------------------------------------------------
1. 可能是最有效的方法是<code>ImmutableSet.copyOf(list).asList()</code>,進而消除了重複和保留的疊代順序。 (但你與<code>LinkedHashSet</code>是幾乎一樣有效,并且不會扔了空值上,在你真正想要的空值在您的收藏萬一。)
2. 我喜歡為它的簡單性。路易斯的答案(而且不需要2全疊代唯一的答案),但不幸的是在現實世界中,你經常會遇到的情況,其中<code>null</code>确實發生。這裡有一個稍長空安全的版本:
或者 CodeGo.net,用靜态導入:
當然,你需要知道的事實,即所有<code>null</code>值将被從清單中丢失。
3. 如果您guava不惜任何代價,你可以做
4. 我真的不使用<code>(Linked)HashMultiSet</code>做任務,以完成<code>ArrayList</code>和<code>(Linked)HashSet</code>像上面-它的可讀性變差的普通Java和(可能)效率較低。 相反,在靜态工廠構造函數,例如<code>newArrayList</code>和<code>newLinkedHashSet</code>要避免所有這些<code><T></code>S:
但是,你能做到的更多的“guava路”-通過避免空值不可變集合。 是以,如果你的收藏不能有空我會一成不變的設定,而不是可變的,低效率的一種:
它仍然複制對象的兩倍,是以考慮是完全不可改變的,簽名的回報<code>ImmutableList</code>:
這種方式有參與隻有一個拷貝,<code>ImmutableCollection.asList()</code>傳回一個視圖。
5. 你可以嘗試guava的多重API來删除duplicates.Just添加您的清單中做設定 多重