2017-05-10 18 views
1

リストを逆順にソートして重複を削除しようとしています。私は次のコードを使用しています。リストを逆順にソートして重複を削除する

public static void main(String[] args) { 
    List<Integer> list = new ArrayList<>(); 
    list.add(3); 
    list.add(3); 
    list.add(2); 
    list.add(3); 
    list.add(2); 
    Collections.sort(list, Collections.reverseOrder()); 
    System.out.println(list); 
    Set<Integer> set = new HashSet<>(list); 
    System.out.println(set); 
} 

正常に動作しますが、セットに変換すると順序が再び変更されます。順番に代わりにHashSetのはTreeSetのを使うの

+0

LinkedHashSetを使用する –

+0

HashSetは挿入順序を保持しません**。それは簡単です。 – GhostCat

答えて

2

HashSetの代わりにLinkedHashSetを使用してください。順序の保証を持たない通常のセットとは異なり

Set<Integer> set = new LinkedHashSet<>(list); 

LinkedHashSet Sが挿入順序を強制。あなたはすでにリストをソートしているので、TreeSetが提供する追加の特典(自然順序付けまたはあなた自身の選択による注文)は必要ありません。

関連する問題