如何按Java映射的键的一部分分组?
例如:我的键是12A,12B,12C,13A,13B,13D,我想从前缀编号开始,然后在哈希图中将字符分组为12(A,B,C)13(A, B,D),然后再次将新对象添加到哈希图中。
我的对象类型:Map <String, BookingClass>
对象密钥,例如:“ 12A”
242G = BookingClass [classCode = G,seatAvailable =,
242E = BookingClass [classCode = E,seatAvailable =,
121D = BookingClass [classCode = D,seatAvailable =,
121C = BookingClass [classCode = C,seatAvailable =,
242B = BookingClass [classCode = B,seatAvailable =,
242A = BookingClass [classCode = A,seatAvailable =,
242O = BookingClass
答案 0 :(得分:2)
您有两种可能。
首先,您可以将数据存储为地图。例如:
Map<String, Map<String,BookingClass>>
第二,您可以使用TreeMap
。此类地图已排序,您可以找到给定范围内的键。因此,假设密钥的第二部分是大写字母,并且“ A”是最小字母,“ Z”是最大字母,那么您可以找到从12A到12Z的范围或其他任何范围。
方法floorKey
和ceilingKey
可以找到第一个和最后一个键。
方法:
public NavigableMap<K,V> subMap(K fromKey,
boolean fromInclusive,
K toKey,
boolean toInclusive)
可以为您返回两个键之间的子图,然后可以在其上导航。
有关更多详细信息,请参见API文档:
https://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html