Java ArrayList限制可容纳10个值
我在我的代码中使用了一个Java ArrayList限制可容纳10个值,java,android,Java,Android,我在我的代码中使用了一个ArrayList,它由一个EditText字段填充,但我想限制ArrayList,使其只能容纳10个值。添加10个值后,如果另一个值试图添加,我只需要它不添加到数组中。有人知道怎么做吗 private static ArrayList<String> playerList = new ArrayList<String>(); private static ArrayList playerList=new ArrayList(); 在处理程序方法
ArrayList
,它由一个EditText
字段填充,但我想限制ArrayList
,使其只能容纳10个值。添加10个值后,如果另一个值试图添加,我只需要它不添加到数组中。有人知道怎么做吗
private static ArrayList<String> playerList = new ArrayList<String>();
private static ArrayList playerList=new ArrayList();
在处理程序方法中:
if(playerList.size() < 10) {
// playerList.add
} else {
// do nothing
}
如果无法控制向列表中添加元素的函数,则可能需要覆盖ArrayList
add
public class MySizeLimitedArrayList extends ArrayList<Object> {
@Override
public boolean add(Object e) {
if (this.size() < 10) {
return super.add(e);
}
return false;
}
}
公共类MySizeLimitedArrayList扩展了ArrayList{
@凌驾
公共布尔加法(对象e){
如果(此.size()<10){
返回super.add(e);
}
返回false;
}
}
您可以这样修改setter方法
private static ArrayList<String> playerList = new ArrayList<String>();
public boolean addToPlayerList(String input) {
if (playerList.size() < 10) {
playerList.add(input);
return true;
} else {
return false;
}
}
ArrayList
没有限制大小的方法;您可以将其扩展为包含一个限制:
public class FixedSizeLimitedArrayList extends ArrayList<Object> {
@Override
public boolean add(Object o) {
int n=10;
if (this.size() < n) {
return super.add(o);
}
return false;
}
}
公共类FixedSizeLimitedArrayList扩展了ArrayList{
@凌驾
公共布尔加法(对象o){
int n=10;
if(this.size()
其他选择包括:
- 使用有限的数组
- 修改使用列表强制执行限制的代码(例如)
- 查找具有限制的列表实现(此处列出了一些示例):
您是否尝试过使用数组而不是列表<代码>字符串[]myarray=新字符串[10]
ArrayList比String[]快&易变ArrayList肯定比数组快,特别是因为ArrayList使用内部数组存储数据。使用列表而不是数组的原因是列表更灵活,op希望删除其中的一部分功能。我正在尝试实现这一点,但它仍然增加了10多个,你能看看这个吗?检查一下我是否实现了正确的方法?我真的更喜欢@sapan diwakar提供的解决方案…它更优雅,更面向对象:你委托给列表来处理它的大小。你应该在else或if之后返回false,很明显,我们也需要重写addAll方法。有趣的是,在大小溢出的情况下,我们是否应该添加给定集合的一部分。这很好,但您应该说它不适用于addAll
private static ArrayList<String> playerList = new ArrayList<String>();
public boolean addToPlayerList(String input) {
if (playerList.size() < 10) {
playerList.add(input);
return true;
} else {
return false;
}
}
public class MyArrayList extends ArrayList {
@Override
public boolean add(String input) {
if (this.size() < 10) {
return super.add(input);
} else {
return false;
}
}
}
public class FixedSizeLimitedArrayList extends ArrayList<Object> {
@Override
public boolean add(Object o) {
int n=10;
if (this.size() < n) {
return super.add(o);
}
return false;
}
}