3

次のコードは何をしますか? LinkedHashSetを に置き換えることはできますHashSetか?

public class CollectionFunction {
    public <E> List<E> function(List<E> list) {
        return new ArrayList<E>(new LinkedHashSet<E>(list));
    }
}
4

4 に答える 4

7

次のコードは何をしますか?

順序を変更せずにリストから重複を削除するために使用されているようです

  1. 重複を削除します (LinkedHashSet はセットです)
  2. 挿入順序を維持します ( LinkedHashSetには予測可能な反復順序があります)
  3. リストに戻す

LinkedHashSet を HashSet に置き換えることはできますか?

いいえ、注文は保証されません (#2)

于 2012-05-10T06:57:01.097 に答える
1

セットは、順序付けされていないアイテムのコレクションであり、リストは含まれているアイテムの順序を保持する必要があります。HashSetアイテムの順序が保存されていないため、リストのようなセットを使用してリストを実装することはできません。リンクされたハッシュセットは、これらの情報を格納します。

于 2012-05-10T07:00:27.630 に答える
1

この関数は、重複する要素を削除し、挿入順序を維持しています。

a,b,c,d,a入力として与えるとa,b,c,d、出力として得られます。

はい、できます

挿入順序が必要ない場合は、LinkedHashSet を HashSet に置き換えます。

b,c,d,aLinkedhashSet を HashSet に置き換えると、出力は次のようになります。

于 2012-05-10T07:05:34.340 に答える
-3

Listインターフェイスを実装するオブジェクトからArrayListを作成します。ArrayListクラスには、コレクションを取得するコンストラクタがあります 。http: //docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html HashSetがコレクション http://を実装しているかどうかを検索する必要があります。 docs.oracle.com/javase/7/docs/api/java/util/Collection.html。また、HashSetが対応するコンストラクターを提供するかどうかを検索する必要があります。HashSetは両方の要件を満たしているので、置き換えることができます:-)。

于 2012-05-10T06:59:45.807 に答える