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;
  }
}