「Hashset を使用して Linkedhashset を作成するにはどうすればよいですか?」というインタビュー中に、この質問をされました。誰も答えを知っていますか?
質問する
711 次
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 インスタンスを取得しますhs
。hs
からの項目が に挿入さ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 に答える