2

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>();
4

5 に答える 5

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.
}
于 2012-12-01T07:21:45.053 に答える
6

魅力的に聞こえるかもしれませんが、拡張ArrayListやその他のList実装は行わないことをお勧めします。1 種類のリストのみを使用するように制限することになるからです。次回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 クラスを拡張する必要はありません。

于 2012-12-01T07:31:13.673 に答える
0

ここには 2 つのオプションがあります。

文字列の配列を作成できます。ここでは、最大サイズを設定するオプションがあります。または

ArrayList を拡張し、その add() メソッドをオーバーライドする新しいクラスを作成できます。

于 2012-12-01T07:28:35.943 に答える
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);
                }
于 2012-12-01T07:43:51.503 に答える
-2

あなたはただすることができません

ArrayList list = new ArrayList(size);
于 2012-12-01T12:05:46.270 に答える