#android #arraylist
#Android #arraylist
Вопрос:
У меня есть position
это равно тому, какой вопрос показан. Я хочу добавить int, равный position
, в arraylist. Затем я хочу проверить и посмотреть, есть ли в этом arraylist этот int, чтобы предотвратить повторное добавление этого int. С помощью следующего кода он добавляет position
int несколько раз.
if(correctQuestions.size() == 0){
correctQuestions.add(position);
}else if(correctQuestions.size() > 0){
if(!Arrays.asList(correctQuestions).contains(position)){
correctQuestions.add(position);
}
}
Если position = 0;
, то каждый запуск этого кода будет постоянно добавляться position
в мой arraylist, независимо от того, есть в нем 0 или нет. Например, выполнение этого кода 3 раза приведет к тому, что мой arraylist выведет [0,0,0], когда он должен разрешить ему добавлять 0 только один раз.
Ответ №1:
вы должны написать так:
if(correctQuestions.size() == 0){
correctQuestions.add(position);
}else if(correctQuestions.size() > 0){
if(!correctQuestions.contains(position)){
correctQuestions.add(position);
}
}
Ответ №2:
попробуйте это :
if(correctQuestions.indexOf(position) < 0) {//this will return -1 if object not found in the arraylist
correctQuestions.add(position);
}
Ответ №3:
У вас будет максимальный индекс вашего Arraylist, предположим, что это переменный размер. Таким образом, вы можете написать условную логику :
if(size!=0 amp;amp; position < size ){
correctQuestions.add(position);
}
Ответ №4:
Метод ArrayList.size() возвращает количество элементов в списке — поэтому, если индекс больше или равен size(), он не существует.
if(correctQuestions.size() > position){
correctQuestions.add(position);
}
if you want to check if position already present in arraylist if `correctQuestions.get( index );` in try block shows that if no key present it will throw in catch
try {
correctQuestions.get( index );
} catch ( IndexOutOfBoundsException e ) {
correctQuestions.add( index, new Object() );
}