In another post of Java Generics you have seen how to create a generic collection using List
in this example you will learn how to make a generic Set
. Making a Set
generic means that we want it to only hold objects of the defined type. We can declare and instantiate a generic Set
like the following code.
Set<String> colors = new HashSet<>();
We use the angle brackets to define the type. We need also to define the type in the instantiation part, but using the diamond operator remove the duplicate and Java will infer the type itself. This declaration and instantiation will give you a Set
object that holds a reference to String objects. If you tried to ask it to hold other type of object such as Date
or Integer
you will get a compiled time error.
Set<String> colors = new HashSet<>();
colors.add("Red");
colors.add("Green");
colors.add("Blue");
//colors.add(new Date()); // Compile time error!
The code for adding items to a set is look the same with the old way we code. But again, one thing you will get here for free is that the compiler will check to see if you add the correct type to the Set
. If we remove the remark on the last line from the snippet above we will get a compiled time error. Because we are trying to store a Date
into a Set
of type String
.
Now, let see how we can iterate the contents of the Set
. First we’ll do it using the Iterator
. And here is the code snippet.
Iterator iterator = colors.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
When using a generic Set
it will know that the iterator.next()
will return a type of String
so that you don’t have use the cast operator. Which of course will make you code looks cleaner and more readable. We can also using the for-each
loop when iterating the Set
as can be seen in the following example.
for (String color : colors) {
System.out.println(color);
}
- How do I create a string of repeated characters? - September 1, 2023
- How do I convert datetime string with optional part to a date object? - August 28, 2023
- How do I split large excel file into multiple smaller files? - April 15, 2023