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