通过索引和键支持订单,插入和查找的集合/地图
问题描述:
在Java(Android)中,我有一堆由唯一日期键入的记录。它们也根据日期的增加进行排序。用户是为了添加到这个集合。通过索引和键支持订单,插入和查找的集合/地图
我需要做能够做到以下几点:
- 查询这些记录直接按日期
- 查询这些记录直接由指数
- 插入一个新的记录(具有唯一的日期)的任何地方,包括两个现有记录之间,从而调整所有受影响记录的索引。
一些实施细节 -
这些记录将在(最新末)按日期递增的顺序进行排序。
这些记录也将在Android ListView中以相反顺序(顶部的最新日期)显示,因此需要非线性直接访问索引。
这些记录也将根据数据库中可能存在或不存在的日期进行绘图,因此需要按日期直接查找。
我一直无法找到满足这些要求的现有解决方案。
完成此操作的最佳方法是什么?
答
我不认为这是现有的集合。我会用一个TreeMap的记录:
Map<Date, MyRecord> records = new TreeMap<Date, MyRecord>(Collections.reverseOrder());
每当你想添加到地图,或按日期查找,只需使用地图以通常的方式。
但是,我不认为你实际上需要通过索引方法查找,以显示ListView
中最新的记录。所有你需要的是一个List<MyRecord>
和使用
new ArrayAdapter(context, resourceId, list);
每当ListView
需要更新使用的代码实例化一个ArrayAdapter
:
list.clear();
list.addAll(records.values()); // Because records is a TreeMap, values() will be in correct order.
adapter.notifyDataSetChanged();
+0
的它的工作原理很好!谢谢你和@fge。 – Alchete 2014-12-13 22:01:39
只是包装一个'TreeMap'到一个类你 – fge 2014-12-13 17:13:02