?

Log in

No account? Create an account
nyaload

Журнал Пушыстого

Журнал Пушыстого

Previous Entry Share Flag Next Entry
Java
nyaload
_winnie
Спешно обмазываюсь Java.

Вкратце про генерики, на русском - http://www.rsdn.ru/article/java/genericsinjava.xml

Наиболее понятная ( хоть и не полная ) диаграмма часто использующихся коллекций - http://dobrokot.ru/pics/tya2010-10-12__12-06-37_c0.jpg .
*TreeSet/TreeMap - сортированные, сделаны на красно-черном дереве.
*ArrayList - динамический массив.
*HashSet/HashMap - понятно из названия.
*LinkedHashMap/LinkedHashSet - запоминают порядок вставленных элементов.
*Vector, Hashtable - потокобезопасные, поэтому чуть тормозней, а так же устарели, вместо них - java.util.concurrent.*, более эффективные и с адекватным интерфейсом для многопоточности.
Более полный (и таки остающийся лаконичным) обзор - http://en.wikibooks.org/wiki/Java_Programming/Collection_Classes

Про @Annотации можно прочитать здесь и простой, но жизненный пример здесь.

Для сравнения строк надо использовать str1.equals(str2) и возможно проверить str1 на null o_O. '==' сравнивает ссылки на объекты в памяти.

Писать легко, читать написанное не очень, много строчек кода ни о чем. Геттеры, классы для пары интов с мнемоническим именем за километр от использования, толстая кожура анонимных классов с небольшим семечком унутре, ручной парсинг строк, импорты, XML-конфигурации, дерево папок проекта, цепочка объектов AbstractCreator.createManager(new XmlConfiguration(getXmlConfigurationFilename())).getExecutor().Execute() для одной операции, методы equals (напоминаю, мы читаем для дебага, а не автогенерим).
Что бы прочитать код, который складывает строки, надо или читать простыную кода со StringBuilder, или знать org.apache.commons (StringUtils), этакий С++ boost, только для Java.


  • 1
> цепочка созданий классов AbstractCreator.createManager(new XmlConfiguration(getXmlConfigurationFilename())).getEntity().Execute() для одной операции

А в чём здесь проблема диковина? Это не особенность языка - такой финт ушами даже на C++ учинить запросто (ну правда ещё смартпойнтер саммонить придётся), - это особенность мозгов, писавших библиотеку.

И дрочево на XML по тому же разряду в общем-то проходит, люди отчего-то предпочитают "программировать" на xml конфигурационные файлы вместо того, чтобы писать нормальный код на более приспособленных к тому языках.

Культура программирования, она сложно отделима от языка и его популярных библиотек.

(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
Я чего-то поймал себя на мысли, что я уже полгода тупо хожу и везде к таким постам говорю - бери Goole Guava, там всё низкоуровневое добро есть в гораздо более толковом и понятном виде. Обычно мне в ответ говорят, что, мол, смотрел и считаю, что это гуано. Ей богу не пойму, что там плохого. Сам ем и не нарадуюсь.

> за один lookup и вставить, и проверить вставленно ли уже, Java не думает

а оно там исключениями не кидается по такому поводу? тоже ведь способ "думать"

Не кидается. Исключения в Jave считаются зло ( затрудняют отладку, взлетают и летят неспешно, как дирижабль ). Двойные лукапы "сначала посмотрим есть ли, а потом уже вставим" не отменяются.

        if (stat.containsKey(arg))
          stat.put(arg, stat.get(arg) + 1);
        else
          stat.put(arg, 1);

(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
а что за сложность в питоновских APIs?

Как-то всё на шарп похоже... :)

(Deleted comment)
Если обмазаться жабой - будешь сильно вонять.

Коллекции, кстати, по-моему наиболее приличное из всего, что там есть. Всё остальное гораздо печальнее.

(Deleted comment)
Да, за красивую запись "a[new_key] = val" и её слишком простую реализацию хорошо наелись.

OMG Винни, я вот игру на яве написал. Абсолютно ничего, что ты описал в посте там даже близко нету. Мне интересно, кто все это использует, зачем оно надо и откуда берутся агрессивные закомплексованные индусы с влодимир гы :)

Советую также почитать про hidden features of java (эта ссылка конкретно на моё предложение, которое довольно полезное во всяком многопоточном коде, но вообще стоит почитать все предложения сначала и просмотреть те, что с малым количеством голосов, они просто позже добавлены).

Круто, да, спасибо, увидел кучу клёвых фишек!


Что бы прочитать код, который складывает строки, надо или читать простыную кода со StringBuilder, или знать org.apache.commons

Простите?

"a"+"b" в рантайме создаст анонимный StringBuilder и склеит как надо. Юзер виджит только "a"+"b"

Зачем рантайму мучать GC и создавать класс для склеивания двух строк, не очень ясно.

Рантайм вряд ли сможет разрулить небольшие вариации на тему for (...) result += next;

Проблемы кучи строк кода при чтении, в некотором смысле, решаются, если код читать в jetbrains IDEA.

Для сравнения nullable строк и прочей мелочи, а также для более человеческой работы с коллекциями рекомендую http://code.google.com/p/guava-libraries/

  • 1