Java 如何限制ArrayList的大小?
我正在尝试创建一个空的ADT包,最多可以容纳100件物品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
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.