All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.xerces.util.SymbolHash Maven / Gradle / Ivy

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.xerces.util;


/**
 * This class is an unsynchronized hash table primary used for String
 * to Object mapping.
 * 

* The hash code uses the same algorithm as SymbolTable class. * * @author Elena Litani * @version $Id: SymbolHash.java 447241 2006-09-18 05:12:57Z mrglavas $ */ public class SymbolHash { // // Constants // /** Default table size. */ protected int fTableSize = 101; // // Data // /** Buckets. */ protected Entry[] fBuckets; /** Number of elements. */ protected int fNum = 0; // // Constructors // /** Constructs a key table with the default size. */ public SymbolHash() { fBuckets = new Entry[fTableSize]; } /** * Constructs a key table with a given size. * * @param size the size of the key table. */ public SymbolHash(int size) { fTableSize = size; fBuckets = new Entry[fTableSize]; } // // Public methods // /** * Adds the key/value mapping to the key table. If the key already exists, * the previous value associated with this key is overwritten by the new * value. * * @param key * @param value */ public void put(Object key, Object value) { int bucket = (key.hashCode() & 0x7FFFFFFF) % fTableSize; Entry entry = search(key, bucket); // replace old value if (entry != null) { entry.value = value; } // create new entry else { entry = new Entry(key, value, fBuckets[bucket]); fBuckets[bucket] = entry; fNum++; } } /** * Get the value associated with the given key. * * @param key * @return the value associated with the given key. */ public Object get(Object key) { int bucket = (key.hashCode() & 0x7FFFFFFF) % fTableSize; Entry entry = search(key, bucket); if (entry != null) { return entry.value; } return null; } /** * Get the number of key/value pairs stored in this table. * * @return the number of key/value pairs stored in this table. */ public int getLength() { return fNum; } /** * Add all values to the given array. The array must have enough entry. * * @param elements the array to store the elements * @param from where to start store element in the array * @return number of elements copied to the array */ public int getValues(Object[] elements, int from) { for (int i=0, j=0; i





© 2015 - 2025 Weber Informatics LLC | Privacy Policy