亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? longhashmap.java

?? 這個是網絡上下載的一個struct框架的程序
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/** * $RCSfile: LongHashMap.java,v $ * $Revision: 1.1 $ * $Date: 2002/06/24 18:51:23 $ * * This class was adapted directly from the Colt sources by CoolServlets Inc. * The changes involved modifying the code so that the functionality could be * encapsulated in a single class file. * * As such, the original copyright is left intact and this file is distributed * under the original Colt license as seen below. Please visit the Colt * homepage for more information about the excellent package: * http://tilde-hoschek.home.cern.ch/~hoschek/colt/index.htm * --------------------------------------------------------------------------- * Copyright ?? 1999 CERN - European Organization for Nuclear Research. * Permission to use, copy, modify, distribute and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting documentation. CERN * makes no representations about the suitability of this software for any * purpose. It is provided "as is" without expressed or implied warranty. */package com.struts2.framework.util;/** * Hash map holding (key,value) associations of type <tt>(long-->Object)</tt>; * Automatically grows and shrinks as needed; Implemented using open addressing * with double hashing.<p> * * Adapted from the Colt package by CoolServlets. Please visit the Colt * homepage at: http://tilde-hoschek.home.cern.ch/~hoschek/colt/index.htm * * @author wolfgang.hoschek@cern.ch */public final class LongHashMap {    //The hash table keys.    protected long table[];    //The hash table values.    protected Object values[];    //The state of each hash table entry (FREE, FULL, REMOVED).    protected byte state[];    //The number of table entries in state==FREE.    protected int freeEntries;    //The number of distinct associations in the map; its "size()".    protected int distinct;    /**     * The table capacity c=table.length always satisfies the invariant     * <tt>c * minLoadFactor <= s <= c * maxLoadFactor</tt>, where s=size() is     * the number of associations currently contained. The term     * "c * minLoadFactor" is called the "lowWaterMark", "c * maxLoadFactor" is     * called the "highWaterMark". In other words, the table capacity (and     * proportionally the memory used by this class) oscillates within these     * constraints. The terms are precomputed and cached to avoid recalculating     * them each time put(..) or removeKey(...) is called.     */    protected int lowWaterMark;    protected int highWaterMark;    //The minimum load factor for the hashtable.    protected double minLoadFactor;    //The maximum load factor for the hashtable.    protected double maxLoadFactor;    protected static final int DEFAULT_CAPACITY = 277;    protected static final double DEFAULT_MIN_LOAD_FACTOR = 0.2;    protected static final double DEFAULT_MAX_LOAD_FACTOR = 0.6;    protected static final byte FREE = 0;    protected static final byte FULL = 1;    protected static final byte REMOVED = 2;    /**     * Constructs an empty map with default capacity and default load factors.     */    public LongHashMap() {        this(DEFAULT_CAPACITY);    }    /**     * Constructs an empty map with the specified initial capacity and default     * load factors.     *     * @param      initialCapacity   the initial capacity of the map.     * @throws     IllegalArgumentException if the initial capacity is less     *             than zero.     */    public LongHashMap(int initialCapacity) {        this(initialCapacity, DEFAULT_MIN_LOAD_FACTOR, DEFAULT_MAX_LOAD_FACTOR);    }    /**     * Constructs an empty map with the specified initial capacity and the     * specified minimum and maximum load factor.     *     * @param      initialCapacity   the initial capacity.     * @param      minLoadFactor        the minimum load factor.     * @param      maxLoadFactor        the maximum load factor.     * @throws	IllegalArgumentException if <tt>initialCapacity < 0 ||     *      (minLoadFactor < 0.0 || minLoadFactor >= 1.0) ||     *      (maxLoadFactor <= 0.0 || maxLoadFactor >= 1.0) ||     *      (minLoadFactor >= maxLoadFactor)</tt>.     */    public LongHashMap(int initialCapacity, double minLoadFactor, double maxLoadFactor) {        setUp(initialCapacity,minLoadFactor,maxLoadFactor);    }    /**     * Removes all (key,value) associations from the receiver.     * Implicitly calls <tt>trimToSize()</tt>.     */    public void clear() {        for (int i=0; i<state.length; i++) {            state[i] = FREE;        }        for (int i=0; i<values.length-1; i++) {            values[i] = null;        }        this.distinct = 0;        this.freeEntries = table.length; // delta        trimToSize();    }    /**     * Returns <tt>true</tt> if the receiver contains the specified key.     *     * @return <tt>true</tt> if the receiver contains the specified key.     */    public boolean containsKey(long key) {        return indexOfKey(key) >= 0;    }    /**     * Returns <tt>true</tt> if the receiver contains the specified value.    *     * @return <tt>true</tt> if the receiver contains the specified value.     */    public boolean containsValue(Object value) {        return indexOfValue(value) >= 0;    }    /**     * Ensures that the receiver can hold at least the specified number of     * associations without needing to allocate new internal memory. If     * necessary, allocates new internal memory and increases the capacity of     * the receiver.<p>     *     * This method never need be called; it is for performance tuning only.     * Calling this method before <tt>put()</tt>ing a large number of     * associations boosts performance, because the receiver will grow only     * once instead of potentially many times and hash collisions get less     * probable.     *     * @param minCapacity the desired minimum capacity.     */    public void ensureCapacity(int minCapacity) {        if (table.length < minCapacity) {            int newCapacity = nextPrime(minCapacity);            rehash(newCapacity);        }    }    /**     * Returns the value associated with the specified key.     * It is often a good idea to first check with {@link #containsKey(long)}     * whether the given key has a value associated or not, i.e. whether there     * exists an association for the given key or not.     *     * @param key the key to be searched for.     * @return the value associated with the specified key; <tt>null</tt> if no     *      such key is present.     */    public final Object get(long key) {        int i = indexOfKey(key);        //If not in the map return null        if (i<0) {            return null;        }        else {            return values[i];        }    }    /**     * Returns the index where the key would need to be inserted, if it is not     * already contained. Returns -index-1 if the key is already contained     * at slot index. Therefore, if the returned index < 0, then it is     * already contained at slot -index-1. If the returned index >= 0,     * then it is NOT already contained and should be inserted at slot index.     *     * @param key the key to be added to the receiver.     * @return the index where the key would need to be inserted.     */    private final int indexOfInsertion(long key) {        final long tab[] = table;        final byte stat[] = state;        final int length = tab.length;        final int hash = ((int)(key ^ (key >> 32))) & 0x7FFFFFFF;        int i = hash % length;        // double hashing, see http://www.eece.unm.edu/faculty/heileman/hash/node4.html        int decrement = (hash) % (length-2);        //OLD CODE: int decrement = (hash / length) % length;        if (decrement == 0) decrement = 1;        // stop if we find a removed or free slot, or if we find the key itself        // do NOT skip over removed slots (yes, open addressing is like that...)        while (stat[i] == FULL && tab[i] != key) {        i -= decrement;            //hashCollisions++;            if (i<0) i+=length;        }        if (stat[i] == REMOVED) {            // stop if we find a free slot, or if we find the key itself.            // do skip over removed slots (yes, open addressing is like that...)            // assertion: there is at least one FREE slot.            int j = i;            while (stat[i] != FREE && (stat[i] == REMOVED || tab[i] != key)) {                i -= decrement;                //hashCollisions++;                if (i<0) i+=length;            }            if (stat[i] == FREE) i = j;        }        if (stat[i] == FULL) {            // key already contained at slot i.            // return a negative number identifying the slot.            return -i-1;        }        // not already contained, should be inserted at slot i.        // return a number >= 0 identifying the slot.        return i;    }    /**     * @param key the key to be searched in the receiver.     * @return the index where the key is contained in the receiver, returns -1     *      if the key was not found.     */    private final int indexOfKey(long key) {        final long tab[] = table;        final byte stat[] = state;        final int length = tab.length;        final int hash = ((int)(key ^ (key >> 32))) & 0x7FFFFFFF;        int i = hash % length;        // double hashing, see http://www.eece.unm.edu/faculty/heileman/hash/node4.html        int decrement = (hash) % (length-2);        //OLD CODE: int decrement = (hash / length) % length;        if (decrement == 0) decrement = 1;        // stop if we find a free slot, or if we find the key itself.        // do skip over removed slots (yes, open addressing is like that...)        while (stat[i] != FREE && (stat[i] == REMOVED || tab[i] != key)) {            i -= decrement;            //hashCollisions++;            if (i<0) i+=length;        }        if (stat[i] == FREE) return -1; // not found        return i; //found, return index where key is contained    }    /**     * @param value the value to be searched in the receiver.     * @return the index where the value is contained in the receiver,     *      returns -1 if the value was not found.     */    protected int indexOfValue(Object value) {        final Object val[] = values;        final byte stat[] = state;        for (int i=stat.length; --i >= 0;) {            if (stat[i]==FULL && val[i]==value) return i;        }        return -1; // not found    }    /**     * Returns the first key the given value is associated with.     *     * @param value the value to search for.     * @return the first key for which holds <tt>get(key) == value</tt>;     *		   returns <tt>Long.MIN_VALUE</tt> if no such key exists.     */    public long keyOf(Object value) {        //returns the first key found; there may be more matching keys, however.        int i = indexOfValue(value);        if (i<0) return Long.MIN_VALUE;        return table[i];    }    /**     * Returns all the keys in the map.     */    public long[] keys() {        long[] elements = new long[distinct];        long[] tab = table;        byte[] stat = state;        int j=0;        for (int i = tab.length ; i-- > 0 ;) {            if (stat[i]==FULL) {                elements[j++]=tab[i];            }        }        return elements;    }    /**     * Associates the given key with the given value. Replaces any old     * <tt>(key,someOtherValue)</tt> association, if existing.     *     * @param key the key the value shall be associated with.     * @param value the value to be associated.     * @return <tt>true</tt> if the receiver did not already contain such a key;     *      <tt>false</tt> if the receiver did already contain such a key - the     *      new value has now replaced the formerly associated value.     */    public boolean put(long key, Object value) {        int i = indexOfInsertion(key);        if (i<0) { //already contained            i = -i -1;            this.values[i]=value;            return false;        }        if (this.distinct > this.highWaterMark) {            int newCapacity = chooseGrowCapacity(                    this.distinct+1,                    this.minLoadFactor,                    this.maxLoadFactor                );            rehash(newCapacity);            return put(key, value);        }        this.table[i]=key;        this.values[i]=value;        if (this.state[i]==FREE) this.freeEntries--;        this.state[i]=FULL;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜激情欧洲亚洲| 不卡大黄网站免费看| 制服丝袜成人动漫| 日韩国产欧美视频| 欧美成人女星排行榜| 国产毛片一区二区| 亚洲少妇中出一区| 制服丝袜亚洲精品中文字幕| 久久狠狠亚洲综合| 中文成人综合网| 在线观看网站黄不卡| 日本不卡一区二区| 国产精品色哟哟| 欧美午夜免费电影| 国产麻豆视频一区| 一区二区三区精品在线| 日韩欧美一区中文| 成人免费高清在线| 午夜精品福利在线| 欧美国产日韩精品免费观看| 欧美三级日韩三级国产三级| 久久99精品一区二区三区| 国产精品高潮呻吟| 欧美肥妇毛茸茸| 不卡一区二区在线| 秋霞成人午夜伦在线观看| 国产精品国模大尺度视频| 欧美日韩不卡一区| 波多野结衣精品在线| 日韩成人一级大片| 亚洲欧美自拍偷拍色图| 日韩免费电影网站| 色琪琪一区二区三区亚洲区| 久久99精品久久久久婷婷| 一区二区三区高清在线| 久久先锋资源网| 欧美日韩亚洲丝袜制服| 粉嫩高潮美女一区二区三区| 日本va欧美va瓶| 一个色在线综合| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲欧洲日本在线| 欧美一级理论片| 在线观看av不卡| 粉嫩欧美一区二区三区高清影视 | 蓝色福利精品导航| 亚洲激情av在线| 国产日产精品1区| 日韩精品在线一区二区| 欧美日韩午夜影院| 91免费观看视频| 成人免费视频一区| 国产一区福利在线| 精品在线亚洲视频| 男男视频亚洲欧美| 午夜不卡av在线| 一区二区三区精品在线| 亚洲欧美色综合| 国产精品视频在线看| 久久精品免视看| 精品国产成人系列| 日韩欧美色电影| 91精品国产综合久久国产大片 | 日韩亚洲欧美在线观看| 欧美视频你懂的| 在线日韩一区二区| 日本丶国产丶欧美色综合| av在线不卡免费看| 99久久国产综合精品麻豆| 成人午夜在线免费| 成人一区二区三区中文字幕| 国产黄色精品视频| 国产精品一二二区| 国产精品影视网| 成人精品小蝌蚪| www.综合网.com| 日韩在线一区二区| 秋霞午夜av一区二区三区 | 国产不卡一区视频| 成人亚洲一区二区一| 成人黄色777网| 色呦呦一区二区三区| 欧美一a一片一级一片| 欧美视频在线一区| 91精品国产乱码| 欧美成人艳星乳罩| 国产欧美一区二区精品婷婷| 国产精品久久午夜| 一区二区三区精品久久久| 五月天婷婷综合| 日韩国产成人精品| 国模娜娜一区二区三区| 成人教育av在线| 欧美日精品一区视频| 欧美日韩精品免费观看视频| 欧美成人三级在线| 国产精品网站在线| 亚洲午夜久久久久中文字幕久| 婷婷丁香激情综合| 国内成人精品2018免费看| 99久久99精品久久久久久| 精品久久99ma| 亚洲国产成人在线| 亚洲综合色在线| 久国产精品韩国三级视频| 丁香激情综合国产| 欧美日韩国产一区| 久久久亚洲精品一区二区三区| 亚洲青青青在线视频| 午夜亚洲福利老司机| 在线观看国产91| 精品国产凹凸成av人导航| 国产精品理论片在线观看| 亚洲成人动漫精品| 国产不卡在线播放| 欧美另类变人与禽xxxxx| 欧美国产精品一区| 日本视频一区二区| av一本久道久久综合久久鬼色| 欧美一级艳片视频免费观看| 国产精品美女久久福利网站| 免费xxxx性欧美18vr| 色综合天天综合给合国产| 精品国产电影一区二区| 亚洲午夜一区二区三区| www.成人在线| 精品盗摄一区二区三区| 亚洲第一综合色| 91小视频在线免费看| 精品国产成人在线影院| 五月天亚洲婷婷| 欧洲色大大久久| 国产精品久久久久久久午夜片| 亚洲视频香蕉人妖| 国产91精品一区二区麻豆亚洲| 欧美日韩不卡一区| 一区二区三区小说| 成人午夜电影小说| 久久综合丝袜日本网| 免费欧美日韩国产三级电影| 在线精品亚洲一区二区不卡| 国产亚洲一本大道中文在线| 免费日韩伦理电影| 欧美三级韩国三级日本三斤| 中文字幕在线观看不卡| 国产精品一区一区三区| 精品黑人一区二区三区久久 | 日韩三级免费观看| 一区二区三区四区不卡在线| av一区二区三区在线| 久久国产尿小便嘘嘘尿| 91麻豆精品国产综合久久久久久| 一区二区视频在线看| caoporn国产一区二区| 日韩免费视频一区二区| 裸体健美xxxx欧美裸体表演| 欧美日韩的一区二区| 亚洲国产精品麻豆| 欧洲国内综合视频| 亚洲国产一区视频| 欧美视频中文一区二区三区在线观看| 亚洲女人的天堂| 色婷婷av一区二区三区gif| 一区二区在线观看视频| 91在线视频播放地址| 一区在线观看免费| 色综合婷婷久久| 亚洲午夜精品17c| 欧美日韩国产首页| 日韩电影在线观看电影| 欧美一区二区网站| 麻豆成人久久精品二区三区红 | 国产亚洲人成网站| 国产99久久久精品| 中文字幕精品—区二区四季| 成人开心网精品视频| 亚洲欧洲综合另类| 欧美亚洲动漫制服丝袜| 亚洲gay无套男同| 精品久久人人做人人爱| 国产精品一区二区三区99| 国产精品久久久久永久免费观看 | 国产精品久久久久三级| 日本高清不卡aⅴ免费网站| 亚洲成年人网站在线观看| 日韩精品一区二区三区中文精品| 国产乱码字幕精品高清av | 国产精品久久久久久一区二区三区| 99精品国产热久久91蜜凸| av在线这里只有精品| 亚洲国产一区视频| 日韩美女天天操| 不卡一区二区三区四区| 亚洲18色成人| 久久免费视频一区| a亚洲天堂av| 日韩avvvv在线播放| 26uuu国产电影一区二区| 99精品视频在线免费观看| 日韩精品欧美精品|