2012-07-31 151 views
0

我正在创建一个应用程序,该应用程序基于用户输入显示一个数组列表的搜索结果。我需要以结果与起始字母索引分开的顺序显示此结果,就像所有以字母开头的元素“A”将在标题A下,以“B”开头将位于B片下,依此类推。 ..获取从数组列表中指定字符串开头的所有元素

我成功地检索每个元素的第一个字符并将其与字母进行比较,但我感觉像一个日志方式。任何人都可以提出任何直接的方式,以便我可以直接获取元素?

在此先感谢,蒂姆

+0

您需要按字母顺序排序名称,是吗? – Venky 2012-07-31 10:35:37

+0

是的,按照字母顺序,就像联系人在Android手机上显示的方式:) – Timson 2012-07-31 10:37:00

+0

检查以下api:http://developer.android.com/reference/android/widget/AlphabetIndexer.html http:// stackoverflow。 com/questions/4115920/alphabetindexer-with-custom-adapter – jeet 2012-07-31 10:36:41

回答

0

不要比较所有。只要使用您的搜索项目作为索引。不断寻找时间。您需要一个索引功能,将您的搜索项目转换为唯一的数字。例如:

lets find "data" word in your list. 

d=4, a=1, t=20: 

data----->4 + 1*4 + 20*(1+4) + 1*(20+1+4) just made up this. 
0

你可以使用正则表达式

^A*\W$用于获取字符串列表以A开头的

+0

或者您也可以对您的列表进行排序并尝试一些逻辑 – 2012-07-31 10:35:19

+0

可以使用TreeSet对列表进行排序,然后创建自定义方法并检索值 – 2012-07-31 10:36:11

1

如果它显示唯一的要求有ArrayList<Set<Title>>其中ArrayList.get(0)会给A和集将有所有标题

如果你想O(1)访问(但不想显示列表结构)使用MultiMap(地图内的地图)get('A')。get('MY TITLE')将立刻回报你价值。

+0

将尝试此:) – Timson 2012-07-31 10:39:13

相关问题