⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listbuffer.java

📁 java编译器gjc源码 java编译环境
💻 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 + -