具有附加条件的Java TreeSet

时间:2017-06-21 15:19:14

标签: java data-structures

在Java中,我使用TreeSet来存储带有时间戳的一些数据点。让我们说一个数据点,我们称之为RestaurantExperience,如下所示:

{
  timestamp: <long>,
  restaurant: <string>,
  tasty: <boolean>
}

现在,我可以使用TreeSet的ceilingfloor方法查找我在特定时间有任何经验的餐厅。但是,我对我在某个特定时间享受“美味”体验的餐厅感兴趣。

这意味着我正在尝试在时间戳附近找到一个数据点,同时具有tasty的特定值。我该怎么做呢?

理想情况下,我会为floorceiling方法添加额外条件,但我不知道如何。否则,是否有更适合此的数据结构?

2 个答案:

答案 0 :(得分:1)

编写一个首先比较boolean tasty的Comparator,然后比较长时间戳

BorderBrush

然后在初始化TreeSet时使用它。

答案 1 :(得分:0)

我最终使用Guava的Sets.filter来过滤我感兴趣的数据点。然后可以使用生成的NavigableSet(仍有floor&amp; ceiling)进行搜索按时间戳。