Ограничение ArrayList для сохранения 10 значений

Я использую ArrayList в моем коде, который заполняется полем EditText но я хочу ограничить ArrayList поэтому он может содержать только 10 значений. После добавления 10 значений, если другой пытается добавить, мне просто нужно его не добавлять в Array . У кого-нибудь есть идеи, как это сделать?

 private static ArrayList<String> playerList = new ArrayList<String>(); 

Solutions Collecting From Web of "Ограничение ArrayList для сохранения 10 значений"

В методе обработчика:

 if(playerList.size() < 10) { // playerList.add } else { // do nothing } 

Редактировать : Ваша ошибка здесь:

 if(playerList.size() < 10) { Button confirm = (Button) findViewById(R.id.add); confirm.setOnClickListener(new OnClickListener() { public void onClick(View v) { EditText playername = (EditText) findViewById(R.id.userinput); playerList.add(playername.getText().toString()); adapter.notifyDataSetChanged(); playername.setText(""); }}); } else { // do nothing } 

Вы должны проверить размер внутри onClickListener , а не снаружи:

  Button confirm = (Button) findViewById(R.id.add); confirm.setOnClickListener(new OnClickListener() { public void onClick(View v) { EditText playername = (EditText) findViewById(R.id.userinput); if(playerList.size() < 10) { playerList.add(playername.getText().toString()); adapter.notifyDataSetChanged(); playername.setText(""); } else { // do nothing } } }); 

Если у вас нет контроля над функцией, которая добавляет элементы в список, вы можете переопределить add ArrayList .

 public class MySizeLimitedArrayList extends ArrayList<Object> { @Override public boolean add(Object e) { if (this.size() < 10) { return super.add(e); } 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; } } 

Другие варианты:

  • Используйте массив, который ограничен.
  • Измените код, который использует список, чтобы обеспечить ограничение (например, ограничение ArrayList для хранения 10 значений )
  • Найдите реализацию списка с ограничением (некоторые примеры перечислены здесь): Любой способ установить максимальный размер коллекции?

Вы модифицируете свой метод настройки таким образом.

 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 MyArrayList extends ArrayList { @Override public boolean add(String input) { if (this.size() < 10) { return super.add(input); } else { return false; } } }