?? set.java
字號:
/** * @(#)Set.java 1.11 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.tools.javac.v8.util;/** * A generic class for sets, modelled after Hashtable. */public class Set { private static class Entry { Object key; int hash; Entry next; Entry(Object key, int hash, Entry next) { super(); this.key = key; this.hash = hash; this.next = next; } } private int hashSize; private int hashMask; private int limit; private int size; private Entry[] table; public Set(int initialSize, float fillFactor) { super(); int hashSize = 1; while (hashSize < initialSize) hashSize = hashSize << 1; this.hashSize = hashSize; this.hashMask = hashSize - 1; this.limit = (int)(hashSize * fillFactor); this.size = 0; table = new Entry[hashSize]; } public Set(int initialSize) { this(initialSize, 0.75F); } public Set() { this(32); } public static Set make() { return new Set(); } private void dble() { hashSize = hashSize << 1; hashMask = hashSize - 1; limit = limit << 1; Entry[] oldtable = table; table = new Entry[hashSize]; for (int i = 0; i < oldtable.length; i++) { for (Entry e = oldtable[i], next = null; e != null; e = next) { int ix = e.hash & hashMask; next = e.next; e.next = table[ix]; table[ix] = e; } } } public boolean contains(Object key) { int hash = ((Object) key).hashCode(); for (Entry e = table[hash & hashMask]; e != null; e = e.next) { if ((e.hash == hash) && ((Object) e.key).equals((Object) key)) { return true; } } return false; } public boolean put(Object key) { int hash = ((Object) key).hashCode(); for (Entry e = table[hash & hashMask]; e != null; e = e.next) { if ((e.hash == hash) && ((Object) e.key).equals((Object) key)) { return true; } } size++; if (size > limit) dble(); int index = hash & hashMask; Entry e = new Entry(key, hash, table[index]); table[index] = e; return false; } public void reset() { for (int i = 0; i < table.length; i++) table[i] = null; size = 0; }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -