コード例 #1
0
ファイル: Diccionario.java プロジェクト: alui/Graficador
  /**
   * Agrega un nuevo valor al diccionario, usando la llave proporcionada. Si la llave ya había sido
   * utilizada antes para agregar un valor, el diccionario reemplaza ese valor con el recibido aquí.
   *
   * @param llave la llave para agregar el valor.
   * @param v el valor a agregar.
   */
  public void agrega(K llave, V v) {

    int i = indice(llave);

    //        System.out.println("LLave: "+llave+" I: "+i);

    Lista<Entrada<K, V>> l = getLista(i, true);
    Entrada<K, V> e = buscaEntrada(llave, l);
    if (e != null) e.valor = v;
    else {

      e = new Entrada<K, V>(llave, v);
      l.agregaFinal(e);
      total++;
    }

    if (this.carga() >= MAXIMA_CARGA) creceArreglo();
  }
コード例 #2
0
ファイル: Diccionario.java プロジェクト: alui/Graficador
  private void creceArreglo() {

    Lista<Entrada<K, V>>[] a = entradas;
    entradas = nuevoArreglo(entradas.length * 2);
    mascara++;

    for (Lista<Entrada<K, V>> e : a) {
      if (e == null) continue;

      for (Entrada<K, V> ent : e) {

        int i = indice(ent.key);
        Lista<Entrada<K, V>> l = getLista(i, true);

        Entrada<K, V> ex = buscaEntrada(ent.key, l);
        if (ex != null) ex.valor = ent.valor;
        else l.agregaFinal(ent);
      }
    }
  }