Учитывая разъяснение ОП своих требований в ответе jjnguy, вот O(n)
(амортизированный) способ подсчета появлений уникальных значений в массиве с плавающей запятой:
float[] values;
Map<Float, Integer> occurrences = new HashMap<Float, Integer>();
for ( float f : values ) {
int count = occurrences.containsKey(f) ? occurrences.get(f) : 0;
occurrences.put(f, count+1);
}
//then find multiple occurrences by finding entries with a value > 0
for ( Entry<Float, Integer> entry : occurrences.values() ) {
if ( entry.getValue() > 1 ) {
System.out.println("Duplicate: " + entry.getKey());
}
}
На практике обычно вонючее использовать float в качестве ключа ко всему или использовать float таким образом, который притворяется, что это дискретное значение. Типы с плавающей запятой обычно используются для имитации «непрерывных» значений, где для всех намерений и целей 7,000000000012 следует рассматривать как 7,000000000013.