0

如果我有一个像这样的大番石榴表:

Table<Foo, Range<Long>, Bar> myTable;

而且我有一个 long 值和一个 Foo 对象 - 我想获取 Bar 对象,它的 Range 包含我的 long。

现在,我能做的最好的事情是在我需要的 Range 中使用 Foo 键来获取所有 Bar:

Map<Range<Long>, Bar> row = cache.row(myFoo);
for (Range<Long> range : row.keySet()) {
            if (range.contains(myLong))  {
                return Arrays.asList(sample.get(myLong));
            }
        }

如您所见,我正在从表中获取行,并遍历范围以寻找我的一个 Bar,其中包含 myLong 的封闭范围。

有没有更好的方法可以在没有 for 循环的情况下找到我的对象?以比该循环更快的方式从该 Ranges 列获取 RangeMap?

4

1 回答 1

0

Map<Foo, RangeMap<Long, Bar>>听起来在这里非常合适。它不会像 API 那样好Table,但它是在少于线性时间的时间内执行该操作的唯一方法。

于 2013-02-11T21:19:02.487 回答