Какой из них был бы лучшим способом сделать это, если у вас очень длинный IfElse?IfElse или regex
if (text.contains("text"))
{
// do the thing
}
else if (text.contains("foo"))
{
// do the thing
}
else if (text.contains("bar"))
{
// do the thing
}else ...
Или
if (text.contains("text") || text.contains("foo") || ...)
{
// do the thing
}
Или, может быть,
Pattern pattern = Pattern.compile("(text)|(foo)|(bar)|...");
Matcher matcher = pattern.matcher(text);
if(matcher.find())
{
// do the thing
}
И я имею в виду только, когда вы должны проверить, много из них. Благодаря!
Я думаю, что это на самом деле O (log n), потому что набор хранится внутри как двоичное дерево. Однако HashTable амортизирует эффективность O (1). –
Из javadoc: «Этот класс предлагает постоянную производительность времени для основных операций (добавление, удаление, содержит и размер), предполагая, что хеш-функция правильно распределяет элементы среди ведер». Это должно быть в случае со строками. – assylias
Мой плохой. Я смешивал их с наборами C++, которые «обычно реализуются как двоичные деревья поиска». –