2015-09-11 60 views
0

所以我有這個代碼獲取一些產品實例,這將產生一個產品ID和一些其他的東西。現在由於某些原因,數據庫會返回一些重複的信息,我需要刪除重複的信息,並根據產品ID將字母順序排序。產品ID值是像亞歷克斯,羅伯特,斯蒂芬妮等名稱我做了搜索,但仍然不知道如何解決,可能是因爲我是新來的Java,所以我想問你是否可以幫助我得到一個直接的答案解決問題。排序一個不可修改的集合,根據集合元素刪除重複

public static Collection<Product> getProductInstances() { 
    return Collections.unmodifiableCollection(INSTANCES.values()); 
} 

public interface Product {  
    public String getProductId(); 
} 
+0

將集合複製到SortedSet中是最容易的,例如, TreeSet中。這會自動處理重疊。 –

+0

@AndyTurner評論並不打算提供解決方案。寫一個適當的答案_please_。 – hiergiltdiestfu

+2

你應該修復數據庫查詢,然後嘗試修復代碼... – fge

回答

0

首先,你不能排序(修改)一個不可修改的集合。

然而,由於集合,你可以得到一個排序,重複數據刪除設置方法如下:

Set<String> set = new TreeSet<>(Comparator.comparing(Product::getId)); 
set.addAll(getProductInstances()); 

遍歷所有的集合將以編號順序,是一套將沒有重複 - 一個TreeSet定義「相等」的元素比較相等。