Set の for-each-loops が、反復子が要素を常に同じ順序で返すという事実に依存する必要があるコードがあります。
for(ParameterObject parameter : parameters) {
/* ... */
}
によって返される反復子HashSetがこのプロパティを持つことは保証されていませんが、 の反復子がこのプロパティを持つことが文書化されていLinkedHashSetます。したがって、私のコードは aを使用しLinkedHashSet、すべて正常に動作します。
ただし、渡されたセットが要件に準拠していることをコードに確認できるかどうか疑問に思っています。これは不可能であるかのように見えます (上の直接テストを除くLinkedHashSet)。LinkedHashSetテストできるインターフェイスが実装されておらず、テストできるインターフェイスも実装されていませんLinkedHashSet.iterator()。OrderConsistentCollectionやのようなインターフェースがあればいいですねOrderConsistentIterator。
(ここでこのプロパティが必要です)。