Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Problem in java.util.Set.addAll() method

Tags:

java

set

I have a java.util.Set<City> cities and I need to add cities to this set in 2 ways:

  • By adding individual city (with the help of cities.add(city) method call)

  • By adding another set of cities to this set (with the help of cities.addAll(anotherCitiesSet) method call)

But the problem in second approach is that i don't know whether there were any duplicate cities in the anotherCitiesSet.

I want to do some processing whenever a duplicate entry is tried to be entered in thecities set.

like image 712
Yatendra Avatar asked Apr 16 '10 12:04

Yatendra


1 Answers

Copy the cities set (to say, citiesCopy), and then call citiesCopy.retainAll(anotherCitiesSet) - the resulting set in citiesCopy will contain the intersection of the two sets, thus allowing you to easily see which cities are duplicated, if any.

Alternatively, loop through the second set and manually add each of the elements, checking the return value from add() each time:

for(java.util.Set<City> c : anotherCitiesSet) {
    if(!cities.add(c)) {
        // c was a duplicate, do something?
    }
}
like image 197
Amber Avatar answered Oct 02 '22 01:10

Amber