<< Chapter < Page Chapter >> Page >

Ordered is not the same as sorted

Note that an ordered collection is not the same as a sorted collection.

The fact that the collection is ordered derives from the fact that each element in the collection has a specific position specified by anindex.

In a sorted collection, the position of each element is determined by its value relative to the values of its predecessors and successors.

Oracle goes on to say, "Unlike sets, lists typically allow duplicate elements. More formally, lists typically allow pairs of elements e1 and e2 suchthat e1.equals(e2), and they typically allow multiple null elements if they allow null elements at all."

Is ascending sort order always required?

Not all implementations of the Collection interface maintain the elements in ascending sort order. Some may, and others do not. Forexample, as discussed above, implementations of the List interface (such as ArrayList ) do not maintain their elements in sorted order at all. In other words, the position of an element in an ArrayList does not depend on the value of the element.

On the other hand, implementations of the interface named SortedSet (such as TreeSet ) and the interface named SortedMap do maintain their elements in sorted order. However, that order is not necessarily ascending.

When an object is instantiated from a class that implements the SortedSet interface, the sorting order for that object can be established by providing anobject instantiated from a class that implements the Comparator interface. In that case, the author of the class that implements the Comparator interface determinesthe order imposed on the elements in the collection.

Does case matter in String objects?

For example, if your SortedSet object contains references to String objects, the natural ascending sort would take the difference between upper caseand lower case characters into account.

However, you might prefer that case be ignored when establishing the sorted order. You can accomplishthis by providing an object of a class that implements the Comparator interface and which defines the compare method and the equals method in such a way as to eliminate case considerations for comparisons of String objects.

Sub-interfaces have more stipulations

As you progress down the inheritance hierarchy, you find that additional stipulations apply at each level of inheritance. As an example, accordingto Oracle, "The Set interface places additional stipulations, beyond those inherited from the Collection interface, on the contracts of all constructorsand on the contracts of the add , equals and hashCode methods."

The important point is that specific sub-interfaces of the Collection interface can define requirements that do not apply to all sub-interfaces of the Collection interface.

Stipulations on set

For example, the add method of the Set interface stipulates the following:

"Adds the specified element to this set if it is not already present."

On the other hand, the add method of the Collection interfacesimply states:

"Ensures that this collection contains the specified element."

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Object-oriented programming (oop) with java. OpenStax CNX. Jun 29, 2016 Download for free at https://legacy.cnx.org/content/col11441/1.201
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?

Ask