如何按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
最佳答案
您有两种可能性。
首先,您可以将数据存储为地图地图。例如:
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