Часто возникает ситуация, когда необходимо обработать различные варианты строковых значений. К примеру, в приложении для заказа еды, где пользователь выбирает тип кухни: «Итальянская», «Японская», «Русская» и так далее. Исходя из этого выбора, программа выполняет различные действия.
String kitchenType = "Итальянская"; // Проверяем тип кухни и возвращаем соответствующее блюдо if (kitchenType.equals("Итальянская")) { return "Пицца"; } else if (kitchenType.equals("Японская")) { return "Суши"; } else if (kitchenType.equals("Русская")) { return "Борщ"; } else { return "Неизвестный тип кухни"; }
Казалось бы, здесь отлично подошел бы оператор switch для обработки различных вариантов строки kitchenType. Однако, до версии Java SE 7, использование switch с типом String было невозможно. Это ограничение было связано с тем, что оператор switch в Java рассчитан на быструю обработку небольшого количества вариантов, что достигается за счет использования так называемых «пропускных таблиц» (jump tables). Эти таблицы эффективны при работе с целочисленными типами и перечислениями, но не подходят для строк.
Хорошей новостью является то, что начиная с Java SE 7, можно использовать switch с типом String. Внутри компилятор Java преобразует строку в хеш-код и использует его в операторе switch, что позволяет достичь высокой производительности.
String kitchenType = "Итальянская"; // Проверяем тип кухни и возвращаем соответствующее блюдо switch (kitchenType) { case "Итальянская": return "Пицца"; case "Японская": return "Суши"; case "Русская": return "Борщ"; default: return "Неизвестный тип кухни"; }
Итак, если вам нужно обрабатывать различные варианты строковых значений в Java версии 7 и выше, не стесняйтесь использовать оператор switch!
Добавить комментарий