Я реализую какую-то «матрицу записи», где индексы осей представляют собой (уникальные) ключи некоторого типа K
(например, String). Эти ключи не нужно сортировать, но мне нужен порядок, поэтому я выбрал SortedSet.
Основная цель ключей (SortedSet) - найти фактический целочисленный индекс в базовом двумерном массиве данных (Seq[Seq[.]]
или что-то еще). Но я не могу найти способы получить такую функцию f(key: K): Int
.
Вместо SortedSet[K]
я мог бы использовать Map[K,Int]
, значения которого являются индексами, но я нахожу это излишним (и плохо типизированным).
Есть идеи?
Изменить
Метод Map что-то вроде, но в 2D:
val myKeys = // SortedSet("A", "B", "C")
val data = // Array(13,42,117)
val keyIndices = myKeys.zipWithIndex.toMap
// get indices of "B", and lookup in data array
data(keyIndices("B"))
Я написал «неправильно типизированный» для решения карты, потому что тип не гарантирует, что индексы последовательны и начинаются с 0. В то время как позиция в упорядоченной последовательности есть.
Выбранное решение
Я выбрал ответ Неймана, потому что он лучше всего подходил для моей реальной проблемы. Но Cipcigan's и Verkerk'sответы больше подходят для названия.