2015-03-18 13 views
8

Warum geben die Methoden treeMap.entrySet() und treeMap.keySet() nicht SortedSet zurück? Ich könnte so weit gehen zu sagen, dass das ein Fehler ist. Gemäß der API ist Set so definiert, dass sie keine bestimmte Reihenfolge hat. Die von TreeMap do zurückgegebenen Sätze weisen jedoch eine bestimmte Reihenfolge auf.Sollte treeMap.entrySet() kein SortedSet zurückgeben?

+1

Was lässt Sie denken, dass es kein 'SortedSet' zurückgibt (ich glaube, Sie haben' TreeSet' dort gemeint)? –

+0

@RohitJain Das ist, was die API sagt. –

+0

API sagt nur, dass es die 'Set'-Ansicht zurückgeben würde. Was die eigentliche 'Set'-Implementierung zurückgibt, ist nicht da und sollte nicht da sein. Das ist das Implementierungsdetail. –

Antwort

10

Ich denke, wenn sie die Schnittstelle SortedMap jetzt geschrieben haben, würden keySet und entrySet zurückgeben. Die Schnittstelle SortedMap wurde jedoch in Java 1.2 eingeführt, bevor kovariante Rückgabetypen zulässig waren. Sie können dies jetzt nicht ändern, da es Implementierungen von SortedMap gibt, für die keySet und entrySet eine Set zurückgibt, das ist nicht ein .

+0

Obwohl es kein SortedSet ist, definiert es tatsächlich, dass das zurückgegebene Set in aufsteigender Reihenfolge ist, wie im Javadoc der Schnittstelle "SortedMap" definiert. – Robin

Verwandte Themen