2015-10-08 59 views
1

我正在尋找一個Java數據結構S<K extends Comparable<?>, V>允許下列操作:對面RangeMap數據結構

  • put(K key, V value)增加了一個值(例如三個項目出售)一鍵(十月第一
  • Collection<V> get(Range<K> range)意義讓我八月和十一月
之間出售的所有項目

我想我可以誤用SortedMap<K, V>,但也許你們知道一個更好的選擇。

示例實例化將是new MyDataStructure<Instant, Integer>來描述在各種日期出售的股票。

+1

鍵值不清晰,請把例子,是一個關鍵'Date'和值'項目的數量sold','TreeMap'可以幫助也許 –

+1

我會選擇一個'TreeMap'。 –

+1

我認爲在Java 8中使用閉包可以幫助你定義這種方法。 –

回答

1

樣的答案我的理解,裏面Map對象可以調整。

1.)可擴展併發ConcurrentNavigableMap實現。該地圖根據其按鍵的自然順序或地圖創建時提供的Comparator進行排序,具體取決於使用哪個構造函數。

2)subMap(K fromKey,boolean fromInclusive,K toKey,boolean toInclusive)

子圖將創建一個基於給定日期的地圖,是否包括它們。

public static void main(String[] args) throws ParseException { 
     ConcurrentSkipListMap<Date, Integer> myMap = new ConcurrentSkipListMap<Date, Integer>(); 

     Calendar cal = Calendar.getInstance(); 
     cal.add(Calendar.DATE, -7); 
     Date myDate1 = cal.getTime(); 
     System.out.println("Date1 = "+myDate1); 
     myMap.put(myDate1, 10); 

     Calendar cal1 = Calendar.getInstance(); 
     cal1.add(Calendar.DATE, -4); 
     Date myDate2 = cal1.getTime(); 
     System.out.println("Date2 = "+myDate2); 
     myMap.put(myDate2, 5); 

     Date myDate3 = new Date(); 
     System.out.println("Date 3 "+ myDate3); 
     myMap.put(myDate3, 2); 

     SortedMap<Date, Integer> outputMap = myMap.subMap(myDate1, true,myDate3, false); 
     System.out.println("Output Map from "+myDate1 +" to "+myDate2 + "is = "+outputMap); 

    } 

輸出

Date1 = Thu Oct 01 16:48:48 IST 2015 
Date2 = Sun Oct 04 16:48:48 IST 2015 
Date 3 Thu Oct 08 16:48:48 IST 2015 
Output Map from Thu Oct 01 16:48:48 IST 2015 to Sun Oct 04 16:48:48 IST 2015is = {Thu Oct 01 16:48:48 IST 2015=10, Sun Oct 04 16:48:48 IST 2015=5} 
0

你可以使用嵌套的地圖。

map<Object,map<object,object>>. 

這種結構適合於烏爾情況如下

map<monthnameobject,map<itemcode(or sequence),itemvalue>>