如何按 Java 映射的键的一部分进行分组?
例如:我的键是 12A、12B、12C、13A、13B、13D,我想从前缀数字开始分组,然后以 HashMap 中的字符为 12(A,B,C) 13(A, B,D),然后再次将新对象添加到 HashMap 中。
我的对象类型:Map <String, BookingClass>
对象键,例如:“12A”
242G=BookingClass [classCode=G, seatsAvailable=,
242E=BookingClass [classCode=E, seatsAvailable=,
121D=BookingClass [classCode=D, seatsAvailable=,
121C=BookingClass [classCode=C, seatsAvailable=,
242B=BookingClass [classCode=B, seatsAvailable=,
242A=BookingClass [classCode=A, seatsAvailable=,
242O=BookingClass
最佳答案
你有两种可能性。
首先,您可以将数据存储为 map 的 map 。例如:
Map<String, Map<String,BookingClass>>
其次,您可以使用TreeMap
。这种类型的映射是排序的,您可以在给定范围内找到键。因此,假设 key 的第二部分是大写字母,并且“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
关于java - 如何按 Java 映射的键的一部分进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53222343/