- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
//...
Hashtable somehash = new Hashtable();
//...
public String keyByValue (String value) {
String s;
while (somehash.elements().hasMoreElements()) {
s = (String) somehash.elements().nextElement(); //!!!
if (s.equals(value)) { //!!!
return s;
}
}
return null;
}
конечно, Hashtable и цикл через Enumeration это здорово, но это все мелочи, просто старый код.
Это кстати подтверждается отсутствие generics
http://google-collections.googlecode.com/svn/trunk/javadoc/index.html?com/google/common/collect/BiMap.html
для небольших хэшей сойдет. по крупным в любом случае придется циклом ходить.
Судя по названию метод должен возвращать ключ, соответствующий переданному значению value (или самый первый из ключей, если их несколько, содержащих value).
Но судя по коду (метод elements() возвращает список не ключей, а значений) тут просто производится проверка наличия в хэше значения value, да и еще возврат переданного значения в случае успеха xD
Это самый смак, благодаря которому, метод образует бесконечный цикл.