设置ArrayList的最大限制



因此,我正在为学校制作一个程序,我们正在创建一个预订系统,人们可以在该系统中预订一张可容纳10人的电影票。只要当天剧院未满,人们就可以将预订时间改为第二天。

在这种情况下,数组是不好的,因为我需要能够从数组中删除一个对象,并在该数组中腾出另一个可用空间,然后将删除的对象添加到不同日期的不同数组中。这个部分适用于ArrayList,但它没有大小限制,所以我一直认为最好的解决方案是什么。我有什么想法可以研究吗?

感谢

您可以尝试以下操作,从数组开始,并通过Arrays.asList将其转换为列表。请注意,您只能在List上使用set((方法,而不能使用add/remove方法,因为这些方法会修改其大小:

String[] array = {"a1","b2","c3"};
List<String> fixed = Arrays.asList(array);
fixed.set(0, "new_string"); // OK
fixed.add("aNewString"); // This will throw an exception

您可以扩展已经具有所需功能的类,并且只覆盖实现新功能所需的方法(即强制执行大小限制(。考虑以下解决方案:

public class CappedList<T extends Object> extends ArrayList<T> {
private final int maxSize;
public CappedList(int maxSize) {
this.maxSize = maxSize;
}
@Override
public boolean add(T e) {
if (this.size() == this.maxSize) {
//Already reached max size, abort adding
throw new IllegalStateException("List is maxed out");
} else {
return super.add(e);
}
}
}

为了完整性,您还需要覆盖所有addaddAll重载的方法。然后可以使用这个CappedList类,而不是简单的ArrayList。为了避免异常处理,实用函数isMaxedOut会很方便:


public boolean isMaxedOut() {
return this.size() == this.maxSize;
}

最新更新