0

「Hashset を使用して Linkedhashset を作成するにはどうすればよいですか?」というインタビュー中に、この質問をされました。誰も答えを知っていますか?

4

1 に答える 1

2

LinkedHashSetクラスにはコンストラクターpublic LinkedHashSet(Collection<? extends E> c)があるため、次のことができます。

HashSet<Foo> hs = new HashSet<Foo>();
// add items...
LinkedHashSet<Foo> lhs = new LinkedHashSet<Foo>(hs);

と同じ内容の LinkedHashSet インスタンスを取得しますhshsからの項目が に挿入さlhsれたのと同じ順序で に挿入されるという保証はないことに注意してください。hsその情報は によって決して保存されないためhsです。

「LinkedHashSetのように動作するHashSet」、つまりインスタンスのHashSetように動作するランタイムクラスのインスタンスを作成する方法はありませんLinkedHashSet。しかし、あなたはすることができます

HashSet<Foo> hs = new LinkedHashSet<Foo>();

これにより、外の世界からはプレーンと見なされるが、実装を内部HashSetで使用するインスタンスが得られます。LinkedHashSetただし、なぜそれをやりたいのかわかりません-宣言された型がHashSet. そもそも LinkedHashSet を使用する理由は、予測可能な反復順序を保証するためですが、それでもそれを想定することはできません-たとえば、いつでもhs割り当てることができます。hs = new HashSet<Foo>()

于 2013-07-28T13:51:38.190 に答える