支持索引和键的顺序,插入和查找的集合/映射

时间:2014-12-13 17:08:31

标签: java android date arraylist map

在Java(Android)中,我有一堆由唯一日期键入的记录。它们也根据增加的日期排序。用户应添加到此集合中。

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

  1. 直接按日期查找这些记录
  2. 直接按索引
  3. 查找这些记录
  4. 在任意位置插入新记录(具有唯一日期),包括两个现有记录之间,从而调整所有受影响记录的索引。
  5. 一些实施细节 -

    这些记录将按日期递增排序(最新版本)。

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

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

    我还没有找到满足这些要求的现有解决方案。

    实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

我认为现有的收藏品并不存在。我会使用TreeMap作为记录:

Map<Date, MyRecord> records = new TreeMap<Date, MyRecord>(Collections.reverseOrder());

每当您想要添加到地图或按日期查找时,只需按常规方式使用地图。

但是,我并不认为您实际上需要通过索引方法进行查找,以便在最新的ListView中显示您的记录。您只需使用

List<MyRecord>ArrayAdapter进行实例化即可
new ArrayAdapter(context, resourceId, list);

每当需要更新ListView时,请使用以下代码:

list.clear();
list.addAll(records.values());  // Because records is a TreeMap, values() will be in correct order.
adapter.notifyDataSetChanged();