Árvore de páginas

Atualiza o valor correspondente a chave em um objeto da classe tHashMap.

Sintaxe

lRet := HMSet( < oHash >, < yKey >, < xVal > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

oHash

objeto

Objeto da classe HashMap (tHashMap)

X

 

yKey

qualquer

Chave de armazenamento do valor

X

 

xVal

qualquer

Valor a ser armazenado na chave

X

 

Retorno

Nome

Tipo

Descrição

lRet

lógico

Verdadeiro (.T.) se executou corretamente e Falso (.F) se houve erro

Observações

  • Se a chave não for encotrada, uma linha será adicionada no HashMap com os valores fornecidos.

Exemplos

Exemplo 1 - com teste de comparação entre Array e HashMap
User Function ex_HMSet()
  Local cKey := "item7"
  Local oVal := 10
  Local lRet := .F.
  Local nI := 0
  Local nMax := 200000
  Local nTimeIni := 0
  Local nTimeFim := 0
  Local nTimeDelta := 0
  Local nRet
  Local aLista
  // Cria um novo HashMap
  Local oHash := HMNew()
  // Insere um valor no HashMap
  lRet := HMSet(oHash, cKey, oVal)
  If lRet == .T.
    ConOut("Inserido chave '" + cKey + "' com sucesso")
  Else
    ConOut("Falha ao inserir chave '" + cKey + "'")
  EndIf
 
  //  TESTE DE COMPARACAO COM ARRAY
  nTimeIni := Seconds()
  For nI := 1 to nMax
    cKey := Str(nI)
    // Insere um valor no HashMap
    lRet := HMSet(oHash, cKey, nI*-10)
    If lRet == .F.
      ConOut("Falha ao inserir chave '" + cKey + "'")
    EndIf
  Next

  nTimeFim := Seconds()
  nTimeDelta := nTimeFim - nTimeIni
  ConOut("Tempo gasto para inserir " + AllTrim(Str(nMax)) + " valores: " + AllTrim(Str(nTimeDelta)) + " segundos")

  nTimeIni := Seconds()
  cKey := Str(nMax/2)
  // Obtem um valor do HashMap
  lRet := HMGet(oHash, cKey, @oVal)
  If lRet == .F.
    ConOut("Falha ao recuperar chave '" + cKey + "'")
  EndIf
  nTimeFim := Seconds()
  nTimeDelta := nTimeFim - nTimeIni
  ConOut("Tempo gasto recuperar a chave '" + cKey + "': " + AllTrim(Str(nTimeDelta)) + " segundos")
  VarInfo(cKey, oVal)
  // Limpa os dados do HashMap
  HMClean(oHash)
  // Libera o objeto de HashMap
  FreeObj(oHash)
  oHash := Nil

  //  TESTE DE COMPARACAO COM ARRAY
  // Cria uma lista
  aLista := {}
  nTimeIni := Seconds()
  For nI := 1 to nMax
    cKey := Str(nI)
    // Insere um valor no HashMap
    AAdd(aLista, {cKey, nI*-10})
  Next
  nTimeFim := Seconds()
  nTimeDelta := nTimeFim - nTimeIni
  ConOut("Tempo gasto para inserir " + AllTrim(Str(nMax)) + " valores: " + AllTrim(Str(nTimeDelta)) + " segundos (Array)")

  nTimeIni := Seconds()
  cKey := Str(nMax/2)
  // Obtem um valor do HashMap
  nRet := AScan(aLista, {|x| x[1] == cKey})
  If nRet == 0
    ConOut("Falha ao recuperar chave '" + cKey + "' (Array)")
  EndIf
  nTimeFim := Seconds()
  nTimeDelta := nTimeFim - nTimeIni
  ConOut("Tempo gasto recuperar a chave '" + cKey + "': " + AllTrim(Str(nTimeDelta)) + " segundos (Array)")
  If nRet > 0
    VarInfo(cKey, aLista[nRet])
  EndIf
  // Libera a lista
  aLista := Nil

Return

Abrangência

Totvs Application Server com versão igual ou superior a 7.00.131227A

Veja também

  • Sem rótulos