Fixes and improvements to IntObjectHashMap

- Rewrite with linear probing, no state array, compaction at cleanup
- Optimize keys() and values() to not use reflection
- Optimize hashCode() and equals() for efficient iteration
- Fixed equals() to not return true for equals(null)
- Optimize iterator to not allocate new Entry at each next()
- Added toString()
- Added some new unit tests
If you have any issues let me know


> Am 20.07.2014 um 17:55 schrieb Osvaldo Pinali Doederlein <notifications@github.com>:
> 
> In common/src/main/java/io/netty/util/collection/IntObjectHashMap.java:
> 
> > @@ -212,10 +197,13 @@ public boolean containsKey(int key) {
> >  
> >      @Override
> >      public boolean containsValue(V value) {
> > -        int i = -1;
> > -        while ((i = nextEntryIndex(i + 1)) >= 0) {
> > -            V next = values[i];
> > -            if (value == next || value != null && value.equals(next)) {
> > +        V v = setValue(value);
> > +        for (int i = 0; i < values.length; ++i) {
> > +<<<<<<< HEAD
> > +            // The map supports null values; this will be matched as NULL_VALUE.equals(NULL_VALUE).
> > +=======
> > +>>>>>>> 5813e35a5182578fe7c7fa646012dd4b7d72a2e8
> argh, github rookie here. will fix these.
> 
> —
> Reply to this email directly or view it on GitHub.