【发布时间】:2011-03-11 03:44:27
【问题描述】:
我大约 3 个月前才开始学习 Java,这是我在这里的第一篇文章,所以请多多包涵。
我有多个从已解析的 XML 构建的 ArrayList,它们按顺序彼此直接相关。这些数组稍后会被放入单个映射的 ArrayList (groupData) 中,以便使用 SimpleAdapter 读取,该 SimpleAdapter 在 Android GUI 中创建列表。
我想要做的是根据一个数组 (arr_title) 按字母顺序对列表进行排序,而其他数组则保持与它同步的顺序。只要对最终显示的列表进行了排序,排序发生在哪里都没有关系。我希望最好在构建映射数组后对其进行排序。代码越简单或越容易理解越好,但也不希望排序速度很慢。每个数组大约有 140 个对象,但考虑到 XML 是从网络上提取的,这可能会扩大。
我花了几个小时在 Google 上搜索并尝试了很多东西,但进展甚微。 Collections.sort(arr_title) 将根据我的需要对一个数组进行排序,但是随后其他数组不匹配并且对其他数组执行相同的操作显然只是按照我不想要的方式对它们进行单独排序。我注意到提到使用 TreeMap 类型和 Comparator 进行类似排序,但无法弄清楚在这种情况下如何使用它们,可能是因为这些示例没有提供足够大的图片让我理解。
下面的示例是在创建单独的数组之后发生大部分事情的地方。
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
Map<String, String> group;
int item = 0;
do {
group = new HashMap<String, String>();
group.put("title", arr_title.get(item));
group.put("desc", arr_desc.get(item));
group.put("num", Integer.toString(arr_num.get(item)));
groupData.add(group);
item++;
} while (item < arr_num.size());
SimpleAdapter adapter = new SimpleAdapter(this, groupData, android.R.layout.simple_list_item_2, new String[] {"title", "desc", "num"}, new int[]{android.R.id.text1, android.R.id.text2});
setListAdapter(adapter);
【问题讨论】:
标签: java android arrays sorting