具有附加条件的 Java TreeSet

标签 java data-structures

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

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

现在我可以使用 TreeSet 的 ceilingfloor 方法来查找我在给定时间有过任何体验的餐厅。不过,我对在特定时间获得“美味”体验的餐厅感兴趣。

这意味着我正在尝试查找一个靠近时间戳并且同时具有特定美味值的数据点。我该如何去做呢?

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

最佳答案

编写一个比较器,首先比较 boolean 值美味,然后比较长时间戳

int compareTo(RestaurantExperience r1, RestaurantExperience r2) {
      if(r1.isTasty() == r2.isTasty()){
          return Long.compare(r1.getTimestamp(), r2.getTimestamp())
      else
          return r1.isTasty() ? 1 : -1;
}

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

关于具有附加条件的 Java TreeSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44680142/

相关文章:

java - Dropwizard 在有效 GET 上返回 400

java - 如何从 Trie 中检索给定长度的随机单词

C 中的 Cell 数据结构

string - 拓扑排序在算法中的正确使用

algorithm - 什么广告组合最赚钱

java - 如何使用 Java 8 streaming api 从 map 列表创建 map map

java - android-是否可以直接从zip文件夹中播放swf文件而无需解压缩

java - Android:从java项目调用python代码

java - 实现 IFB_LLLLCHAR

sql - 有效地搜索匹配给定属性/属性集及其值的记录(完全匹配、小于、大于)