如何创建一个可以在Java中存储50个字符串的ArrayList?

时间:2012-12-01 07:19:00

标签: java arraylist

我想将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>();

5 个答案:

答案 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);