如何按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的范围或其他任何范围。

方法floorKeyceilingKey可以找到第一个和最后一个键。

方法:

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

10-01 06:43