<< Chapter < Page Chapter >> Page >

As you will see later, the names were added to the collection in a different order than the output order shown above.

In this step, each of the six names that were added to the collection were displayed after they were arranged into their natural ordering .

In case you are unfamiliar with this aspect of character encoding, upper-case characters appear before lower-case characters in the natural ordering of characters in the Unicode character set. Therefore, the names consisting of all upper-casecharacters appear in the output ahead of the same names consisting of a mixture of upper-case and lower-case characters.

The second step

Then the program shown in Listing 1 instantiates a new TreeSet object, providing a Comparator for use in comparing and managing the sort order of the elements.

The program populates the new TreeSet collection with the same set of six names in the same order as before. After the collection is populated, itscontents are displayed producing the following output (without the bullets) :

  • Comparator in use
  • Bill Joe Tom

Duplicate names eliminated from the set

Three of the names appear in the output in the same order as the natural ordering shown earlier. However, the duplicate names were eliminated and only three names appear.

This is because a Comparator was used by the TreeSet object to compare the elements as they were added. The Comparator was designed to eliminate the distinction between upper-case and lower-case characters.

Does Joe equal JOE?

For the earlier case that didn't use a Comparator , the names Joe and JOE were considered to be different elements. Therefore, after population, both names appeared in the collection.

When the Comparator was used to eliminate the distinction between upper-case and lower-case characters, the names Joe and JOE were considered to be duplicates. As a result, only the first of the two was allowedinto the collection and the second of the two was rejected.

Let's see some code

The code shown in Listing 2 is the code that was used

  • To instantiate a TreeSet object without a Comparator ,
  • To populate the collection, and
  • To display the contents of the collection after it was populated.
Listing 2 . Create, populate, and display a TreeSet collection.
ref = new TreeSet(); Populator.fillIt(ref);iter = ref.iterator(); while(iter.hasNext()){System.out.print(iter.next() + " "); }//end while loop

The Populator code

The code in Listing 3 was used to populate the collection in both cases, both with, and without a Comparator (to be discussed later).

Listing 3 . The class named Populator.
class Populator{ public static void fillIt(Collection ref){ref.add("Joe"); ref.add("Bill");ref.add("Tom"); ref.add("JOE");ref.add("BILL"); ref.add("TOM");}//end fillIt() }//end class Populator

Populating the collection with String objects

Note that in Listing 3 , unlike earlier modules, I did not use a class of my own design from which to instantiate the objects used to populate the collection. Rather, I used the String class from the standard library.

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