java - 如何按 Java 映射的键的一部分进行分组?

标签 java eclipse group-by hashmap

如何按 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 或之间的任何值的范围。

方法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

关于java - 如何按 Java 映射的键的一部分进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53222343/

相关文章:

java - 查看不同步更新

java - 简单的应用程序无法在 Eclipse 中编译(带插件)?

MySQL View 在 Order by 之后做一个 Group by

mysql - 选择每个客户的姓名以及他们在 session 中花费的总时间

java - 记住我不工作..抛出 java.lang.IllegalStateException : UserDetailsService is required

java - 如何使用 JWT 集成 Twitter 登录?

java - 在 drl 文件中定义集合

java - 复选框被选中?在复选框元素内循环

android - 在 Eclipse Android SDK 管理器中找不到 Kindle Fire SDK

sql - GROUP by ITEM number 和 Quantity to Stock 的总和