我工作的一个应用程序,需要语音输入,而输入匹配在清单已知的项目。
清单中的每个项目都有别名列表,这样长的标题项目可以匹配较短的名称。
例如:
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;
}
}
}
这是一个检验批次的原型25项伟大的工作,但最终需要处理的尽可能接近实时地在手机上5,000-10,000项目。
核心问题:
假设我可以保留在内存中,这些项目(约64千字节的采样时钟,所以比共10000项兆字节以下)10000,什么是使用Android上对这些对象存储在内存中的最好的收集,什么是以最快的方式来填充数据对象,然后找到匹配的元素?