Scala Mapa (mapa)
Map (mapa) é uma espécie de pares chave-valor iterativos (key / value) estrutura.
Todos os valores podem ser recuperados por uma chave.
Mapear a chave é única.
Mapa também é chamado de uma tabela hash (As tabelas de hash).
Mapa Existem dois tipos de variáveis e não podem ser alteradas, com excepção de que o objecto variável pode modificá-lo sem objetos mutáveis não pode.
Por padrão, o Scala Mapa imutável. Se você precisar usar uma coleção variável, você precisa de introduzir explicitamente classe deimportação scala.collection.mutable.Map
Em Scala pode utilizar o Map variável e imutável, o uso Mapa direta imutável, mutável uso mutable.Map. O exemplo que se segue demonstra a aplicação do Mapa imutável:
// 空哈希表,键为字符串,值为整型 var A:Map[Char,Int] = Map() // Map 键值对演示 val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")
Ao definir um mapa, você precisa definir o tipo de pares chave-valor. Se você precisar adicionar pares de valores-chave, você pode usar o sinal +, da seguinte forma:
A += ('I' -> 1) A += ('J' -> 5) A += ('K' -> 10) A += ('L' -> 100)
Básico Mapa de Operações
Scala Mapa Há três operações básicas:
caminho | descrição |
---|---|
chaves | Voltar Mapa todas as chaves (key) |
valores | Mapa retorna todos os valores (valor) |
isEmpty | No mapa é Returns vazias verdadeira |
Exemplos
O exemplo que se segue demonstra a aplicação dos três métodos básicos acima:
object Test { def main(args: Array[String]) { val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F") val nums: Map[Int, Int] = Map() println( "colors 中的键为 : " + colors.keys ) println( "colors 中的值为 : " + colors.values ) println( "检测 colors 是否为空 : " + colors.isEmpty ) println( "检测 nums 是否为空 : " + nums.isEmpty ) } }
Implementação do código acima, a saída é:
$ scalac Test.scala $ scala Test colors 中的键为 : Set(red, azure, peru) colors 中的值为 : MapLike(#FF0000, #F0FFFF, #CD853F) 检测 colors 是否为空 : false 检测 nums 是否为空 : true
fusão mapa
Você pode usar o operador++ ou Mapa. ++ ()Para ligar duas Mapa, remove duplicado chave quando Mapa fusão. Os dois exemplos que se seguem demonstram o Mapa combinado:
object Test { def main(args: Array[String]) { val colors1 = Map("red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F") val colors2 = Map("blue" -> "#0033FF", "yellow" -> "#FFFF00", "red" -> "#FF0000") // ++ 作为运算符 var colors = colors1 ++ colors2 println( "colors1 ++ colors2 : " + colors ) // ++ 作为方法 colors = colors1.++(colors2) println( "colors1.++(colors2)) : " + colors ) } }
Implementação do código acima, a saída é:
$ scalac Test.scala $ scala Test colors1 ++ colors2 : Map(blue -> #0033FF, azure -> #F0FFFF, peru -> #CD853F, yellow -> #FFFF00, red -> #FF0000) colors1.++(colors2)) : Map(blue -> #0033FF, azure -> #F0FFFF, peru -> #CD853F, yellow -> #FFFF00, red -> #FF0000)
Mapa de teclas de saída e valores
O seguinte loop foreach através do Mapa de chaves e valores de saída:
object Test { def main(args: Array[String]) { val sites = Map("w3big" -> "http://www.w3big.com", "baidu" -> "http://www.baidu.com", "taobao" -> "http://www.taobao.com") sites.keys.foreach{ i => print( "Key = " + i ) println(" Value = " + sites(i) )} } }
Implementação do código acima, a saída é:
$ scalac Test.scala $ scala Test Key = w3big Value = http://www.w3big.com Key = baidu Value = http://www.baidu.com Key = taobao Value = http://www.taobao.com
Verifique se a chave especificada existe no Mapa
É possível utilizar o métodoMap.contains para ver se a presença do Mapa chave especificada.Exemplos são os seguintes:
object Test { def main(args: Array[String]) { val sites = Map("w3big" -> "http://www.w3big.com", "baidu" -> "http://www.baidu.com", "taobao" -> "http://www.taobao.com") if( sites.contains( "w3big" )){ println("w3big 键存在,对应的值为 :" + sites("w3big")) }else{ println("w3big 键不存在") } if( sites.contains( "baidu" )){ println("baidu 键存在,对应的值为 :" + sites("baidu")) }else{ println("baidu 键不存在") } if( sites.contains( "google" )){ println("google 键存在,对应的值为 :" + sites("google")) }else{ println("google 键不存在") } } }
Implementação do código acima, a saída é:
$ scalac Test.scala $ scala Test w3big 键存在,对应的值为 :http://www.w3big.com baidu 键存在,对应的值为 :http://www.baidu.com google 键不存在
Método Scala Mapa
A tabela a seguir lista os métodos comumente utilizados Mapa Scala:
Não. | Método e Descrição |
---|---|
1 | def ++ (xs: Mapa [( A, B)]): Mapa [A, B] Ele retorna um novo mapa, Novo Mapa xs composição |
2 | def - (elem1: A, elem2 : A, elems: A *): Mapa [A, B] Retorna um novo mapa, remova a chave para elem1, elem2 ou outros elems. |
3 | def - (xs: GTO [A ]): Mapa [A, B] Retorna um novo mapa, remova xs objeto tecla correspondente |
4 | def get (key: A): Opção [B] Retorna o valor da chave especificada |
5 | def iterator: Iterator [(A, B)] Criar uma nova iteração, e emite o valor par chave / |
6 | def addString (b: StringBuilder): StringBuilder O mapa de todos os elementos ligados para o StringBuilder, pode ser adicionado a um separador |
7 | addString def (b: StringBuilder, setembro : String): StringBuilder O mapa de todos os elementos ligados para o StringBuilder, pode ser adicionado a um separador |
8 | def aplicar (key: A): B Retorna o valor da chave especificada, se não houver retorno ao Mapa método padrão |
9 | def clear (): Unidade Limpar mapa |
10 | clone def (): Mapa [A , B] De um para outro do Mapa Mapa |
11 | def contém (key: A): booleano Se houver um mapa de chave especificado, retorna true, caso contrário, retorna false. |
12 | def copyToArray (xs: Array [( A, B)]): Unidade Conjunto de cópias para uma matriz |
13 | def count (p: ((A , B)) => Boolean): Int Calcule o número de elementos que atendem aos critérios especificados definidos |
14 | padrão def (key: A): B O valor padrão é definido Mapa retorna quando a chave não está presente. |
15 | def cair (n: int): Mapa [A, B] A nova coleção antes de retornar devoluções n elementos |
16 | def dropRight (n: int): Mapa [A, B] Voltar descartar os últimos n elementos da nova coleção |
17 | DEF dropWhile (p: ((A , B)) => booleano): Mapa [A, B] elemento de descarte esquerda para a direita, até que a condição não for satisfeita p |
18 | def vazio: Mapa [A, B ] Devolver o mesmo tipo de mapa vazio |
19 | def equals (que: Qualquer): booleano Se os dois são iguais Mapa (chave / valor são iguais), retorna true, caso contrário false |
20 | DEF existe (p: ((A , B)) => booleano): booleana Analisando as condições especificadas no existe o elemento de coleção |
21 | DEF filtro (p: ((A , B)) => booleano): Mapa [A, B] Voltar para todas as coleções que atendem aos critérios especificados |
22 | def filtragem (p: (A) => Boolean): Mapa [A, B] Retorna imutável Mapa atendem aos critérios especificados de |
23 | DEF encontrar (p: ((A , B)) => booleano): Opção [(A, B)] Encontrando-se o primeiro elemento na coleção que atenda aos critérios especificados |
24 | foreach def (f: ((A , B)) => Unit): Unidade Todos os elementos da função para o conjunto |
25 | def INIT: Mapa [A, B ] Retorna todos os elementos, exceto o último |
26 | def isEmpty: Boolean Detectar se o mapa está vazio |
27 | chaves Def: Iterable [A] Devolver todas as chaves / p> |
28 | DEF última: (A, B) Retorna o último elemento |
29 | Def max: (A, B) Localizar o elemento máximo |
30 | DEF min: (A, B) Encontre o menor elemento |
31 | def mkString: String O conjunto de todos os elementos do mostrador como uma string |
32 | produto def: (A, B) Retorna uma coleção de elementos digitais na trama. |
33 | def remover (key: A): Opção [B] Remove a chave especificada |
34 | DEF reter (p: (A, B) => booleano): Map.this.type Se eles satisfazem a condição retorna true |
35 | tamanho def: Int Retorna o número de elementos no Mapa |
36 | soma def: (A, B) Retorna uma coleção de todos os elementos da sociedade digital |
37 | tail def: Mapa [A, B ] Retorna uma coleção de outros elementos, exceto o primeiro elemento |
38 | def tomar (n: int): Mapa [A, B] Retorna os primeiros n elementos |
39 | def takeRight (n: int): Mapa [A, B] n elementos Voltar |
40 | DEF TakeWhile (p: ((A , B)) => booleano): Mapa [A, B] Retorna os elementos condição especificada for atendida |
41 | def toArray: Array [(A, B)] Definir matriz de transferência |
42 | def toBuffer [B>: A] : Buffer [B] Voltar tampão, contendo todos os elementos do mapa |
43 | ToList def: Lista [A] Lista de volta, contém todos os elementos do mapa |
44 | def toSeq: Seq [A] Voltar Seq, contém todos os elementos Mapa |
45 | def Toset: Ajuste [A] Voltar Definir, contendo todos os elementos do mapa |
46 | toString def (): String Retorna um objeto String |
Mais maneiras para se referir a documentação da API