This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ArrayList<Integer> al = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6)); | |
for (int i : al) { | |
if (i == 3) | |
al.remove(i); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; 15分钟学会Emacs Lisp (v0.2a) (作者:bzg,https://github.com/bzg 译者:lichenbo,http://douban.com/people/lichenbo) | |
;; | |
;; 请先阅读Peter Norvig的一篇好文: | |
;; http://norvig.com/21-days.html | |
;; (译者注:中文版请见http://blog.youxu.info/21-days/) | |
;; | |
;; 之后安装GNU Emacs 24.3: | |
;; | |
;; Debian: apt-get install emacs (视具体发行版而定) | |
;; MacOSX: http://emacsformacosx.com/emacs-builds/Emacs-24.3-universal-10.6.8.dmg |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static <K,V> TreeMap.Entry<K,V> successor(Entry<K,V> t) { | |
if (t == null) | |
return null; | |
else if (t.right != null) { | |
Entry<K,V> p = t.right; | |
while (p.left != null) | |
p = p.left; | |
return p; | |
} else { | |
Entry<K,V> p = t.parent; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** From CLR */ | |
private void fixAfterInsertion(Entry<K,V> x) { | |
x.color = RED; | |
while (x != null && x != root && x.parent.color == RED) { | |
if (parentOf(x) == leftOf(parentOf(parentOf(x)))) { | |
Entry<K,V> y = rightOf(parentOf(parentOf(x))); | |
if (colorOf(y) == RED) { | |
setColor(parentOf(x), BLACK); | |
setColor(y, BLACK); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public V put(K key, V value) { | |
if (key == null) | |
return putForNullKey(value); | |
int hash = hash(key.hashCode()); | |
int i = indexFor(hash, table.length); | |
for (Entry<K,V> e = table[i]; e != null; e = e.next) { | |
Object k; | |
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) { | |
V oldValue = e.value; | |
e.value = value; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static int hash(int h) { | |
// This function ensures that hashCodes that differ only by | |
// constant multiples at each bit position have a bounded | |
// number of collisions (approximately 8 at default load factor). | |
h ^= (h >>> 20) ^ (h >>> 12); | |
return h ^ (h >>> 7) ^ (h >>> 4); | |
} | |
static int indexFor(int h, int length) { | |
return h & (length-1); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class PriorityQueue<E> extends AbstractQueue<E> | |
implements java.io.Serializable { | |
private static final long serialVersionUID = -7720805057305804111L; | |
private static final int DEFAULT_INITIAL_CAPACITY = 11; | |
private transient Object[] queue; | |
private int size = 0; | |
private final Comparator<? super E> comparator; | |
private transient int modCount = 0; | |
public PriorityQueue() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private void allocateElements(int numElements) { | |
int initialCapacity = MIN_INITIAL_CAPACITY; | |
// Find the best power of two to hold elements. | |
// Tests "<=" because arrays aren't kept full. | |
if (numElements >= initialCapacity) { | |
initialCapacity = numElements; | |
initialCapacity |= (initialCapacity >>> 1); | |
initialCapacity |= (initialCapacity >>> 2); | |
initialCapacity |= (initialCapacity >>> 4); | |
initialCapacity |= (initialCapacity >>> 8); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class LinkedList<E> | |
extends AbstractSequentialList<E> | |
implements List<E>, Deque<E>, Cloneable, java.io.Serializable | |
{ | |
transient int size = 0; | |
transient Node<E> first; | |
transient Node<E> last; | |
public boolean addAll(int index, Collection<? extends E> c) { | |
checkPositionIndex(index); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { | |
protected AbstractList() => 空方法 | |
public boolean add(E e) => 调用含有index的add | |
abstract public E get(int index) => 未实现 | |
public E set(int index, E element) => 抛出异常 | |
public void add(int index, E element) => 抛出异常 | |
public E remove(int index) => 抛出异常 | |
public int indexOf(Object o) => 调用ListIterator进行查找 | |
public int lastIndexOf(Object o) => 调用ListIterator进行查找 | |
public void clear() => 调用RemoveRange |
NewerOlder