用于存储具有时间线的数据范围的数据结构

问题描述 投票:0回答:1

我需要在我的应用程序中存储用户的活动日志数据。它包括用户开始进行活动的时间。例如,在下午1点,开始的“活动A”。下午2点,用户启动了“活动B”。下午3点,用户启动了'Avtivity A'。从这些日志中,我以后应该可以查询信息

  1. 用户在上午12点到晚上8点之间进行活动A多长时间了?
  2. 用户切换活动的次数等

任何人都可以建议什么是一个良好的内存数据结构来存储这些信息?

编辑:可能有数千个日志。用户不能同时进行多项活动。

java algorithm data-structures
1个回答
1
投票

首先,让我们尝试为您提供数据结构,以便假设您有一个活动。

所以让我们有一个列表来存储时间戳(我正在考虑一个整数的例子)。

ArrayList<Integer> integers = new ArrayList<Integer>();

在此,您可以存储时间戳。假设你已存储了

integers.add(1);
integers.add(10);
integers.add(12);
integers.add(176);
integers.add(1678);

现在,您需要访问其中唯一的特定值集。考虑JDK中的NavigableSet类。

NavigableSet<Integer> set = new TreeSet<>(integers);

您可以使用查询特定集

set.subSet(0, 175); // this will give 1,10,12 from the above values

现在有一个存储多个活动的地图。

Map<String, List> activityTimeStampmap= new HashMap<>();

如果Activity不存在,您可以添加Activity。如果Activity已经存在,则必须更新列表。

希望这对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.