2

データとして名前を付けたと仮定する3つのオブジェクトを持つリストがあります。

  1. データ [0] は 0 ~ 6 です
  2. データ [1] には 6 ~ 13 があります
  3. データ [2] には 13 ~ 23 があります

メソッドがあり、2 つの引数があり、1 つは isstarttimeで、もう 1 つは is ですendtime。私の要件は、入力値が最初のオブジェクトの間にある場合、このメソッドは最初のオブジェクトを返すことです。入力値が最初の 2 つのオブジェクトの間にある場合、メソッドは最初の 2 つのオブジェクトを返す必要があります。これどうやってするの。誰でも教えてもらえますか?

4

1 に答える 1

5

重複する範囲がなく、例のように範囲が連続していると仮定します(そうでない場合は、自分で何かを実装する必要があります):

TreeMapを使用して、開始または範囲とその値を格納できます。たとえば、

TreeMap<Int, Object> map = new TreeMap<Int, Object>();
map.put(0, obj1);
map.put(6, obj2);
map.put(13, obj3);

次に、TreeMap.floorEntryを使用して取得しますthe greatest key less than or equal to the given key

次に、次のようになります。

map.get(0); // obj1
map.get(3); // /obj2
nap.get(22); // obj3

キーが 0 未満か 23 より大きいかどうかを確認するチェックを追加し、それらの値のマップをチェックしないようにすることができます。

あなたの問題については、両方starttimeをチェックしendtimeて、同じオブジェクトを取得するかどうかを確認できます。

于 2012-12-19T10:43:52.777 に答える