получить недостающие числа в списке массивов - PullRequest
0 голосов
/ 01 января 2019

Мне нужно получить пропущенные номера списка массивов, список массивов получает свои номера из базы данных Firebase, поэтому мне нужно получить пропущенные номера, которых нет в массиве.Числа находятся в диапазоне от 1 до 10, а arrayList содержит [3,9,7,5], поэтому он выведет «1 2 4 6 8 10» в виде списка.Мой код просто дублирует цифры от 1 до 10 раз для каждого номера.так как я могу сделать это в Android.... вот мой код

 @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            ArrayList<String> array = new ArrayList<>();
            ArrayList<Integer> arrayList = new ArrayList<>();
            for (DataSnapshot ds : dataSnapshot.getChildren()) {
                students = ds.getValue(Students.class);
                studentSeatNum = students.getSeatnum();

                arrayList.add(Integer.valueOf(studentSeatNum));// save numbers from fire-base database into array list
            }
            // get missing values of the array list
            for (int i = 1; i <= 10; i++) {
                for (int j = 0; j < arrayList.size(); j++) {
                    if (i != arrayList.indexOf(j)) {
                        array.add(String.valueOf(i));
                    }
                }
            }
            adapter = new ArrayAdapter<String>(EmptySeats.this, android.R.layout.simple_list_item_1, array);
            listView.setAdapter(adapter);
        }

1 Ответ

0 голосов
/ 01 января 2019

Решение

Если список будет всегда иметь числа между 1-10 , например: [3,7,9], используйте простой цикл for, как этот:

for (int i = 1; i <= 10; i++){
   if (!list.contains(i)){
      otherlist.add(i);
   }
}

Вывод

otherlist будет содержать [1,2,4,5,6,8,10]

Пояснение

метод .contains() проверяет, есть ли в списке ужеопределенное число, если это не так, вы просто добавляете это число (в случае примеров i - индекс цикла) к otherlist.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...