Я наткнулся на код Java для поиска префикса в JList. Однако, глядя на это, суть алгоритма довольно неэффективна, он использует линейный поиск по списку для каждого нажатия клавиши и выполняет медленное преобразование регистра в узком цикле.
Я бы предположил, что для очень больших объемов данных специально реализованное троичное дерево поиска было бы гораздо более эффективным решением. Однако, если кто-то стремился к простому коду и не предъявлял требований к производительности, обуславливающих такие сложности, есть ли другие более простые способы улучшить этот алгоритм, не требуя значительного объема дополнительного кода?
for (int i=0; i < jList1.getModel().getSize(); i++) {
String str = ((String)jList1.getModel().getElementAt(i)).toLowerCase();
if (str.startsWith(m_key)) {
jList1.setSelectedIndex(i);
jList1.ensureIndexIsVisible(i);
break;
}
}