1. Java / Говнокод #4541

    +75

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 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;
            }

    Запостил: Cr0s, 05 Ноября 2010

    Комментарии (9) RSS

    • знаете, как обойтись без цикла?

      конечно, Hashtable и цикл через Enumeration это здорово, но это все мелочи, просто старый код.
      Это кстати подтверждается отсутствие generics
      Ответить
      • Это подтверждает класс Hashtable который протух лет 10 назад
        Ответить
        • На платформе J2ME он, по всей видимости, не утратил популярности.
          Ответить
          • всмысле там по прежнему нужен полностью синхронизированный класс?
            Ответить
      • можно и без цикла. Юзаем BiMap от гугла, вызываем метод inverse() и извлекаем выгоду :)
        http://google-collections.googlecode.com/svn/trunk/javadoc/index.html?com/google/common/collect/BiMap.html
        для небольших хэшей сойдет. по крупным в любом случае придется циклом ходить.
        Ответить
    • Говно кода в том, что он не работает.
      Ответить
    • Бред какой-то...
      Судя по названию метод должен возвращать ключ, соответствующий переданному значению value (или самый первый из ключей, если их несколько, содержащих value).
      Но судя по коду (метод elements() возвращает список не ключей, а значений) тут просто производится проверка наличия в хэше значения value, да и еще возврат переданного значения в случае успеха xD
      Ответить
      • s = (String) somehash.elements().nextElement();

        Это самый смак, благодаря которому, метод образует бесконечный цикл.
        Ответить

    Добавить комментарий