Как сгруппировать по части ключа карты Java? - PullRequest
0 голосов
/ 09 ноября 2018

Как сгруппировать по части ключа карты 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 голосов
/ 09 ноября 2018

У вас есть две возможности.

Во-первых, вы можете хранить свои данные в виде карты карт. Например:

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

...