java 最接近_Java在集合中查找最接近(或相等)的值

我有一个类:

public class Observation {

private String time;

private double x;

private double y;

//Constructors + Setters + Getters

}

我可以选择将这些对象存储在任何类型的集合中(标准类或第三方,如Guava).我已经在下面的ArrayList中存储了一些示例数据,但就像我说的那样,我对任何其他类型的集合都是开放的.所以,一些示例数据:

ArrayList ol = new ArrayList();

ol.add(new Observation("08:01:23",2.87,3.23));

ol.add(new Observation("08:01:27",2.96,3.17));

ol.add(new Observation("08:01:27",2.93,3.20));

ol.add(new Observation("08:01:28",2.93,3.21));

ol.add(new Observation("08:01:30",2.91,3.23));

该示例假定Observation中的匹配构造函数.时间戳存储为String对象,因为我从外部源接收它们,但我很乐意将它们转换为其他内容.我按时间顺序接收观察结果,因此我可以创建并依赖于有序的观察集合.时间戳不是唯一的(如示例数据中所示),因此我无法根据时间创建唯一键.

现在来问题了.我经常需要找到时间相等或最接近某个时间的一(1)次观察,例如,如果我的时间是08:01:29,我想在示例数据中获取第4个观察值,如果时间是08: 01:27我想要第3次观察.

我显然可以遍历整个集合,直到找到我正在寻找的时间,但我需要经常这样做,并且在一天结束时我可能有数百万的观察,所以我需要找到一个解决方案,我可以找到有效的相关观察.

我已经查看了各种集合类型,包括我可以使用Predicates过滤集合的类型,但是我找不到能够返回一个值的解决方案,而不是满足“< =”条件的集合的子集. .我基本上是在寻找SELECT * FROM ol WHERE time< = t LIMIT 1的SQL等价物.

我相信有一个聪明而简单的方法来解决我的问题所以我希望能够开悟.先感谢您.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值