如何在Java中实现固定大小的“列表”?

由于 Java核心库没有这样的集合,数组是否是最佳选择,特别是如果不想依赖第三方库?
我会在ArrayList周围编写一个包装类,在add和addAll方法中,我会在添加新元素之前检查列表的大小.如果已达到最大大小,则可以抛出异常(或不执行任何操作,具体取决于您在代码中的确要执行的操作).

这是一个简短的例子:

public class SizeLimitedArray<E> implements java.util.List<E>
    {
    private static final int DEFAULT_SIZE_LIMIT = 10;
    private ArrayList<E> myList;
    private int maxSize;

    public SizeLimitedArray ()
        {
        this (DEFAULT_SIZE_LIMIT);
        }

    public SizeLimitedArray (int size)
        {
        myList = new ArrayList<E> (size);
        maxSize = size;
        }

    @Override
    public boolean add (E objectToAdd)
        {
        if (myList.size () > maxSize)
            {
            throw new IllegalStateException ("The array is full");
            }

        return myList.add (objectToAdd);
        }

    @Override
    public boolean addAll (Collection collectionToAdd)
        {
        if (myList.size () + collectionToAdd.size () > maxSize)
            {
            throw new IllegalStateException ("The array is full");
            }

        return myList.addAll (collectionToAdd);
        }

    // Rest of class omitted for brevity
    }
相关文章
相关标签/搜索