Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何限制ArrayList的大小?_Java_Arraylist_Collections - Fatal编程技术网

Java 如何限制ArrayList的大小?

Java 如何限制ArrayList的大小?,java,arraylist,collections,Java,Arraylist,Collections,我正在尝试创建一个空的ADT包,最多可以容纳100件物品 public class ListArrayListBased implements ListInterface { private ArrayList<Object> data; public ListArrayListBased() { this.data = new ArrayList<Object>(); 公共类ListArrayListBased实现ListInterfa

我正在尝试创建一个空的ADT包,最多可以容纳100件物品

public class ListArrayListBased implements ListInterface {

   private ArrayList<Object> data;

   public ListArrayListBased() {
        this.data = new ArrayList<Object>();
公共类ListArrayListBased实现ListInterface{
私有数组列表数据;
公共ListArrayListBased(){
this.data=new ArrayList();

如何将ArrayList限制为100个对象?

您不能直接限制
ArrayList
的大小,但由于它没有公开,只能通过
ListArrayList
的方法添加,因此您可以显式检查大小。例如:

public void add(对象o){
如果(data.size()>=100){
抛出新的IllegalArgumentException(“数据已满”);
}
数据.添加(o);
}

您可以重写add方法。可能还有其他方法也需要重写。我相信,
addAll
调用
add

List<Integer> list = new ArrayList<>() {
    @Override
    public boolean add(Integer v) {
        if(size() < 10) {
            return super.add(v);
        }
        return false;
    }
};

for (int i = 0; i< 11; i++) {
    System.out.println(list.add(i));
}
List.of(数组)
您可以将数组传递给,从而生成一个具有固定数组大小的
列表
。不能添加、删除或替换元素

Object[] arr = new Object[100] ;
… populate array 
List< Object > objs = List.of( arr ) ;

@towhid这只是设置初始容量,它不是一个限制,您可以创建一个数组(
新对象[100]
)然后使用
数组。asList
创建一个不能修改的
列表
。您不能限制列表的大小。但是您可以预先填充列表,并在通过调用ArrayList填充列表后创建一个不可修改的集合,这并不意味着要有限制。您应该将ArrayList包装在一个类中(例如,
ADTBag
)并自己实现该逻辑什么是“ADT包”,为什么要提到它?只检查了源代码(应该早点完成)。显然,
ArrayList.addAll
的当前实现没有调用
add
。有四个add方法,
add(Integer)
add(整数,整数)
addAll(集合
Object[] arr = new Object[100] ;
… populate array 
List< Object > objs = List.of( arr ) ;
EvictingQueue< Person > people = com.google.common.collect.EvictingQueue.create( 100 ) ;  // Set maximum size to 100.