Второй фрагмент больше инкапсулирован, чем первый.Первый дает доступ к внутренней карте любому, в то время как второй хранит ее в классе.
Оба приведут к сопоставимой производительности.
РЕДАКТИРОВАТЬ: так как вы измените вопрос, яТакже изменит ответ.
Если вы проходите через получатель, и получатель не является окончательным, это означает, что подклассы могут вернуть другую карту, чем та, которую вы держите в классе.Выберите, хотите ли вы, чтобы ваш метод работал на карте подкласса или на карте класса.Оба могут быть приемлемыми, в зависимости от контекста.
В любом случае, предположим, что ваш подкласс всегда создает защитную копию карты, у вас будет много копий, если вы не кешируете результат получения в локальной переменной useAnimals
.Может потребоваться всегда работать с последним значением карты подкласса, но я сомневаюсь, что это так.
Если подкласса нет, или подкласс не переопределяет метод или не переопределяет его всегдавозврат одной и той же карты приведет к сопоставимой производительности, и вам не следует об этом заботиться.