Добавление int в arraylist, только если оно еще не существует

#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() );
}