如何在java中爲重複對象排序對象列表?基本上每個對象在排序後都應該在列表中排列。也許有人知道一個很好的例子。如何對重複對象列表進行排序
回答
您可以添加列表到集合中的元素,然後創建這些元素的新列表,像這樣:
List<Object> originalList = new ArrayList<Object>();
// the elements of originalList get added here
Set<Object> set = new HashSet<Object>(originalList);
List<Object> newList = new ArrayList<Object>(set);
注意:
- 我使用
Object
作爲列表和設置的類型,將其替換爲適合您需要的類型 - 爲了使上述工作正常進行,列表中的對象必須覆蓋
hashCode
和equals
個
- 在新的列表中的元素將在不同的順序不同於原始列表
要從列表中獲得唯一元素的集合,您可以將所有元素添加到Set
。
List<String> l = new ArrayList<String>();
Set<String> s = new HashSet<String>(l);
使用構造函數怎麼樣:HashSet(Collection extends E> c) –
好點;相應編輯。 –
如果你只是想刪除重複的,試試這個:
List<Object> l; //Your list of data
for(int i = l.size()-1; i > 0; i--)
for(int j = i; j > 0; j--)
if(l.get(i).equals(l.get(j))) //or == for primitives
l.remove(j);
如果你想申請一個特定的排序,你可以在同一for
循環中的if
語句之後做到這一點。這是HashSet
的唯一優勢。
這不符合要求,因爲當您從列表l中刪除第j個元素時,所有更高的元素向下移動,您的索引就會混亂。當使用索引移除元素時,_always向後工作,例如, 'for(int i = l.size() - 1; i> = 0; i - )' – user949300
我忘記了,現在編輯。 – Jon
非常非常無效,你循環設置每個項目的集合,它有一組8個項目,即8 + 7 + 6 + 5 + 4 + 3 + 2 + 1或36,因爲你少做一個每一次),但是接着說你有24個項目......(298),每增加一個大小就增加最大數量,不是很快。 –
正如其他人已經指出的那樣,你可以用一組數據結構。但是,由於您正在尋找一個排序的列表,而不是使用HashSet,您可以去TreeSet,其默認情況下其元素按自然順序排序。
例如爲:
List<Integer> list = new ArrayList<Integer>();
list.add(8);
list.add(5);
list.add(3);
list.add(5);
list.add(9);
Set<Integer> s = new TreeSet<Integer>(list);
Iterator<Integer> itr = s.iterator();
while(itr.hasNext()) {
System.out.print(itr.next() + " ");
}
輸出:
他希望排序的原因是這樣可以更輕鬆地刪除重複項。然而+1是唯一一個看起來像是閱讀整篇文章的人。 –
- 1. 如何使用重複鍵對列表進行排序?
- 2. 如何對JSP中的對象列表進行排序
- 3. 如何對類對象列表進行排序
- 4. 如何對python Django對象列表進行排序?
- 5. 如何使用動態對象對列表進行排序
- 6. 如何對日期對象列表進行排序?
- 7. 如何對包含對象的列表進行排序?
- 8. 如何對我的對象列表進行排序
- 9. 如何根據對象的屬性對列表進行排序
- 10. Scala如何對對象字段列表(Object.field)進行排序?
- 11. 如何對json對象進行排序?
- 12. 如何對2D列表進行排序?
- 13. CompareTo如何對列表進行排序?
- 14. 如何對此列表進行排序?
- 15. 如何對列表進行排序?
- 16. 如何對列表進行排序?
- 17. 如何對IEnumerable列表進行排序?
- 18. 如何根據對象的屬性對對象列表進行排序?
- 19. 如何根據對象的變量之一對對象列表進行排序
- 20. 如何按每個對象的成員對對象列表進行排序?
- 21. 如何根據重複對錶格列進行排名?
- 22. 對數據網格列進行排序。對象列表c#
- 23. 通過Python中的重複對列表進行排序
- 24. 根據運行時屬性對對象列表進行排序
- 25. 如何在Javascript中對複雜列表進行排序?
- 26. 如何可以在列表中進行排序蟒對象
- 27. 如何對列表中的元素進行多重排序
- 28. 如何按對象值對對象數組進行排序?
- 29. 如何使用對象屬性列表排序對象列表
- 30. 如何用java中的對象對鏈表進行排序
你想 「之類的,然後刪除重複項」 或者僅僅是 「刪除重複」 就夠了嗎?如果不是,那麼「刪除重複然後排序」呢?例如。是否有一個特別的理由來排序第一(或根本) - 如果不是創建自己的重複卸妝,將相同價值的物品排序考慮在內? ;-)請相應地更新標題/問題。 – 2011-12-11 00:06:50