[11] RFR: 8193128: Reduce number of implementation classes returned by List/Set/Map.of()

Peter Levart peter.levart at gmail.com
Mon Jan 8 19:49:22 UTC 2018



On 01/08/18 20:46, Peter Levart wrote:
>
> Or better yet, compute the size of the other set as you iterate the 
> elements. Like this:
>
>         public boolean equals(Object o) {
>             if (o == this)
>                 return true;
>
>             if (!(o instanceof Set))
>                 return false;
>
>             int osize = 0;
>             for (Object e : (Iterable<?>) o) {
>                 if (!contains(e)) {
>                     return false;
>                 }
>                 osize++;
>             }
>             return size() == osize;
>         }
>
> ...since calling .size() on the passed-in Set might not be free.
>

Ops, forgot to check for null 'e':

         @Override
         public boolean equals(Object o) {
             if (o == this)
                 return true;

             if (!(o instanceof Set))
                 return false;

             int osize = 0;
             for (Object e : (Iterable<?>) o) {
                 if (e == null || !contains(e)) {
                     return false;
                 }
                 osize++;
             }
             return size() == osize;
         }


Regards, Peter



More information about the core-libs-dev mailing list