我想将arraylist限制为50.但我不知道如何。
这是我的代码 Object1.java
public class Object1 {
public String seat_no, id;
public Object1(String seat_no, String id) {
this.seat_no = seat_no;
this.id = id;
}
}
main.java
private ArrayList<Object1> list;
list = new ArrayList<Object1>();
答案 0 :(得分:6)
您可以做的是将ArrayList扩展为LimitedArrayList并覆盖add方法。
public class LimitedArrayList<E> extends ArrayList<E>{
private final int capacity;
public LimitedArrayList(int capacity) {
super(capacity);
this.capacity = capacity;
}
@Override
public boolean add(E e) {
if(size()>=capacity){
throw new ListFullExcption();
}
return super.add(e);
}
// there are more add methods to override but i will let you figure that out.
}
答案 1 :(得分:6)
虽然听起来很诱人,但我建议不要延长ArrayList
或任何其他List
实施,因为那时你将限制自己只使用一种类型的列表。如果下次要限制LinkedList
而非ArrayList
,会发生什么?你会延长LinkedList
吗?如果你想限制List
您正在寻找的东西已经存在。您可以使用Commons Collections并使用谓词包装列表:
class SizePredicate implements Predicate {
private List list;
private int maxSize;
public SizePredicate(List l, int size) {
list = l;
maxSize = size;
}
public boolean evaluate(Object obj) {
if (list.size() >= maxSize) {
throw new IllegalStateException("Your message here");
}
list.add(obj);
}
}
...
List list = new LinkedList(); // Or, really, any implementation of list.
List maxList = ListUtils.predicatedList(list, new SizePredicate(list, 50));
使用上面的设计,您可以使用相同的Predicate
实例来限制任何类型的列表。你也可以扩展它来处理任何类型的集合......
...无需扩展任何JDK类。
答案 2 :(得分:0)
这里有两个选项:
您可以创建一个String数组,在这里您可以选择设置最大大小。 或者
您可以创建一个新类,它将扩展ArrayList并覆盖其add()方法。
答案 3 :(得分:0)
试试这段代码
public class UserInformation {
private String userId;
private String name;
public void setUserId(String userId) {
this.userId = userId;
}
public void setUsername(String name) {
this.name = name;
}
}
添加数据
public List<UserInformation> userInfo= new ArrayList<UserInformation>();
public UserInformation objuserinfo= null;
for(int i=0;i<50;i++)
{
objuserinfo = new UserInformation();
objuserinfo.setUserId("ID");
objuserinfo.setUsername("name");
userInfo.add(objuserinfo);
}
答案 4 :(得分:-2)
你不能这样做
ArrayList list = new ArrayList(size);