因此,我正在为学校制作一个程序,我们正在创建一个预订系统,人们可以在该系统中预订一张可容纳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);
}
}
}
为了完整性,您还需要覆盖所有add
和addAll
重载的方法。然后可以使用这个CappedList
类,而不是简单的ArrayList
。为了避免异常处理,实用函数isMaxedOut
会很方便:
public boolean isMaxedOut() {
return this.size() == this.maxSize;
}