📄 listbuffer.java
字号:
/** * @(#)ListBuffer.java 1.15 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 class for constructing lists by appending elements. Modelled after * java.lang.StringBuffer. */public class ListBuffer { /** * The list of elements of this buffer. */ public List elems; /** * A pointer pointing to the last, sentinel element of `elems'. */ public List last; /** * The number of element in this buffer. */ public int count; /** * Has a list been created from this buffer yet? */ public boolean shared; /** * Create a new initially empty list buffer. */ public ListBuffer() { super(); this.elems = new List(); this.last = this.elems; count = 0; shared = false; } /** * Return the number of elements in this buffer. */ public int length() { return count; } /** * Is buffer empty? */ public boolean isEmpty() { return count == 0; } /** * Is buffer not empty? */ public boolean nonEmpty() { return count != 0; } /** * Copy list and sets last. */ private void copy() { List p = elems = new List(elems.head, elems.tail); while (true) { List tail = p.tail; if (tail == null) break; p = p.tail = new List(tail.head, tail.tail); } last = p; shared = false; } /** * Prepend an element to buffer. */ public ListBuffer prepend(Object x) { elems = elems.prepend(x); count++; return this; } /** * Append an element to buffer. */ public ListBuffer append(Object x) { if (shared) copy(); last.head = x; last.tail = new List(); last = last.tail; count++; return this; } /** * Append all elements in a list to buffer. */ public ListBuffer appendList(List xs) { while (xs.nonEmpty()) { append(xs.head); xs = xs.tail; } return this; } /** * Append all elements in an array to buffer. */ public ListBuffer appendArray(Object[] xs) { for (int i = 0; i < xs.length; i++) { append(xs[i]); } return this; } /** * Convert buffer to a list of all its elements. */ public List toList() { shared = true; return elems; } /** * Does the list contain the specified element? */ public boolean contains(Object x) { return elems.contains(x); } /** * Convert buffer to an array */ public Object[] toArray(Object[] vec) { return elems.toArray(vec); } /** * The first element in this buffer. */ public Object first() { return elems.head; } /** * Remove the first element in this buffer. */ public void remove() { if (elems != last) { elems = elems.tail; count--; } } /** * Return first element in this buffer and remove */ public Object next() { Object x = elems.head; remove(); return x; } /** * An enumeration of all elements in this buffer. */ public Enumeration elements() { return new Enumerator(elems, last); } static class Enumerator implements Enumeration { List elems; List last; Enumerator(List elems, List last) { super(); this.elems = elems; this.last = last; } public boolean hasMoreElements() { return elems != last; } public Object nextElement() { Object elem = elems.head; elems = elems.tail; return elem; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -