如何按Java映射的键的一部分分组?

时间:2018-11-09 08:42:43

标签: java eclipse group-by hashmap

如何按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

1 个答案:

答案 0 :(得分:2)

您有两种可能。

首先,您可以将数据存储为地图。例如:

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