bguiz,
Я думаю (я не знаю), что итерация EntrySet (альтернатива 2) незначительно более эффективна, просто потому, что она не хеширует каждый ключ для получения его значения ..Сказав это, вычисление хеша является операцией O (1) для каждой записи, и, следовательно, мы говорим ТОЛЬКО O (n) по всему HashMap
... но учтите, что все это относится только к HashMap
... другие реализации Map
могут иметь ОЧЕНЬ разные характеристики производительности.
Я думаю, что вы «настаиваете», чтобы на самом деле ЗАМЕЧАТЬ разницу в производительности.Если вас это беспокоит, то почему бы не настроить тест-кейс на время для обоих методов итерации?
Если у вас нет РЕАЛЬНОЙ, о которой сообщалось, проблемы с производительностью, то вы действительно беспокоитесь о не очень ...Несколько тактов здесь и там не повлияют на общее удобство использования вашей программы.
Я считаю, что многие, многие другие аспекты кода, как правило, важнее, чем прямая производительность.Конечно, некоторые блоки "критичны к производительности", и это известно ДО того, как оно даже написано, не говоря уже о тестировании производительности ... но такие случаи довольно редки.В качестве общего подхода лучше сосредоточиться на написании полного, правильного, гибкого, тестируемого, многоразового, читаемого, поддерживаемого кода ... производительность МОЖЕТ быть встроена позже, когда возникнет такая необходимость.
Версия 0 должна быть ПРОСТОЙ, КАК ВОЗМОЖНОЙ, без каких-либо «оптимизаций».