2011-02-05 8 views
13

Stavo leggendo il codice hadoop e ho trovato questa linea in un partizionatore.Perché usare un bit AND qui?

(key.hashCode() & Integer.MAX_VALUE) % numReduceTasks

Perché stanno usando l'AND bit a bit?

risposta

18

Per rimuovere il bit di segno. nel caso in cui l'hashCode sia un numero negativo. è come Math.abs(key.hashCode())

+1

Tranne che immagino probabilmente più veloce ... –

+0

Perché sarebbe più veloce? – JohnFx

+0

@ chris-thompson mi chiedo che cosa 'Math.abs' fa? è probabile fa lo stesso bit a bit e. –