2014-02-18 4 views
0

У меня есть следующие строки кода в Scala:Каково значение Seq [Int] в качестве ключа в Map [Seq [Int], FactorNode]?

private val factorNodes: mutable.Map[Seq[Int], FactorNode] = mutable.Map[Seq[Int], FactorNode]() 

Таким образом, этот экземпляр mutable.Map, но я не понимаю, ключ - Seq[Int].

Является ли Seq[Int] массив целых чисел или просто особым способом индексирования позиции на карте?

+4

В 'scala'' Seq' почти такая же, как реализация 'List' в Java. – christopher

+1

Если вы хотите получить подробный отчет в дополнение к вышеупомянутому комментарию Кристофера, посетите эту ссылку http://docs.scala-lang.org/overviews/collections/seqs.html –

+0

ОК, поэтому, если я правильно понимаю, ключ на карте не является уникальным целым числом, а целым числом. Я этого не ожидал! Спасибо за ответ. – Luca

ответ

3

Seq[Int] - это черта (похожа на интерфейс Java). Когда реализовано, это в основном массив целых чисел. Это означает, что ваша карта использует массивы в качестве ключей. Вы можете сделать примерно следующее:

val a: FactorNode = new FactorNode 
val b: FactorNode = new FactorNode 

val map: mutable.Map[Seq[Int], FactorNode] = mutable.Map(Seq(1,2,3) -> a) 

map += (Seq(1,2,5) -> b) 

// and to retrieve: 
map(Seq(4,5,6)) // should fail. 
map(Seq(1,2,5)) // should return b. 
+3

«Когда реализовано, это в основном массив целых чисел». Нет. Это целая последовательность целых чисел. Он может не иметь эффективных операций индексирования или размера, может быть невозможно изменить элементы и т. Д. –

+1

'Seq [Int]' не является признаком как таковым, 'Seq' и да, как заметил Алексей ** Seq не является массивом ** (особенно в смысле java): базовой структурой может быть список массивов, связанный список или что-то еще, поэтому характеристики производительности могут значительно различаться. –

Смежные вопросы