2014-12-13 59 views
1

在Java(Android)中,我有一堆由唯一日期键入的记录。它们也根据日期的增加进行排序。用户是为了添加到这个集合。通过索引和键支持订单,插入和查找的集合/地图

我需要做能够做到以下几点:

  1. 查询这些记录直接按日期
  2. 查询这些记录直接由指数
  3. 插入一个新的记录(具有唯一的日期)的任何地方,包括两个现有记录之间,从而调整所有受影响记录的索引。

一些实施细节 -

这些记录将在(最新末)按日期递增的顺序进行排序。

这些记录也将在Android ListView中以相反顺序(顶部的最新日期)显示,因此需要非线性直接访问索引。

这些记录也将根据数据库中可能存在或不存在的日期进行绘图,因此需要按日期直接查找。

我一直无法找到满足这些要求的现有解决方案。

完成此操作的最佳方法是什么?

+6

只是包装一个'TreeMap'到一个类你 – fge 2014-12-13 17:13:02

回答

1

我不认为这是现有的集合。我会用一个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

相关问题