|
Java example source code file (SymbolHash.java)
The SymbolHash.java Java example source code/* * reserved comment block * DO NOT REMOVE OR ALTER! */ /* * Copyright 2001, 2002,2004 The Apache Software Foundation. * * Licensed 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 com.sun.org.apache.xerces.internal.util; /** * This class is an unsynchronized hash table primary used for String * to Object mapping. * <p> * The hash code uses the same algorithm as SymbolTable class. * * @author Elena Litani * @version $Id: SymbolHash.java,v 1.7 2010-11-01 04:40:14 joehw Exp $ */ 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<fTableSize && j |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.