Я работаю над приложением, которое принимает голосовой ввод и сопоставляет его с известными элементами в манифесте.
Каждый элемент в манифесте имеет список псевдонимов, поэтому элементы с длинными заголовками могутбыть сопоставленными с более короткими именами.
Например:
class Product
{
itemname: "Old Stinky's Western Kentucky Big Rig Polish",
aliases: ["old stinky", "other alias"]
}
И затем загружены в память как:
public List<Product> Collection;
Collection.Add(alltheproducts);
И затем сопоставлены через:
public String isProductOrAlias(String lowertext)
for (Product p: products.Collection) {
if(lowertext.equals(p.name.toLowerCase()))
return p.name;
if(p.aliases != null) {
for (String s: p.aliases) {
if(lowertext.equals(s.toLowerCase()))
return p.name;
}
}
}
Это прекрасно работает с тестовой партией из двадцати пяти предметов в прототипе, но в конечном итоге потребуется обработать от 5000 до 10000 предметов как можно ближе к реальному времени на телефоне.
Основной вопрос:
Если предположить, что я могу хранить 10 000 таких элементов в памяти (пример составляет около 64 килобайт, то есть меньше, чем мегабайт для 10 000 элементов), какая коллекция лучше?использовать на Android для хранения этих объектов в памяти, и какой самый быстрый способ заполнить этот объект данными, а затем найти соответствующие элементы?