0

私がこのような大きなグアバテーブルを持っている場合:

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

そして、私はlong値を持っており、Fooオブジェクトを持っています-私は自分のlongを含む範囲を持つBarオブジェクトを取得したいと思います。

今、私が必要な範囲内のFooキーですべてのバーを取得するために私ができる最善のことはこれです:

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

ご覧のとおり、テーブルから行を取得し、範囲を反復処理して、myLongを含む閉じた範囲を持つ1つのバーを探しています。

forループなしでオブジェクトを見つけるためのより良い方法はありますか?おそらくそのループよりも速い方法で範囲のその列からRangeMapを取得しますか?

4

1 に答える 1

0

Map<Foo, RangeMap<Long, Bar>>ここでは完全に適切なようです。APIほど優れているわけではありませんがTable、線形時間未満でその操作を実行する唯一の方法です。

于 2013-02-11T21:19:02.487 に答える