У меня есть ArrayList объекта подобного: [объект 1, объект 2, NULL, NULL, .., пустой, объект 3, NULL, NULL]Размещение нуль в конце списка
я стараюсь переместите объект 3 после объекта 2 без удаления «нулевого случая», но он не работает. Поэтому я хотел бы перебрать свой массивList справа налево и проверить, не имеет ли значение значение null, а затем переместить объект 3 за объект 2. Я точно знаю, что я не знаю число «нулевого случая» между объектом 2 и объектом 3
Я стараюсь писать так:
ArrayList<Type> subList = new ArrayList<Type>();
for (int i = 0; i < array.size(); i++) {
subList = array.get(i);
for (int j = subList.size(); j >=0 ; j--) {
if(subList.get(j)!=null) {
Collections.swap(subList, j, j-1);
}
}
}
редактировать:
раствор 1: что работает для моего проекта
for(int i=0;i<subList.size();i++)
if(subList.get(i)!=null) {
for(int j=0;j<i;j++) {
if (subList.get(j)==null) {
Collections.swap(subList,i,j);
break;
}
}
}
}
решение 2: копию в другой ArrayList не работает для моего проекта, не знает, почему
List<String> strings = Arrays.asList(new String[]{"A", null, "B"});
List<String> result = new ArrayList<String>();
for(String string : strings) {
if(string != null)
result.add(string);
}
for (int i = 0, remaining = strings.size() - result.size(); i < remaining; i++) {
result.add(null);
}
почему бы просто не сортировать ArrayList? – TheLostMind
На самом деле я хотел бы сохранить все «случай» и поместить themat в конец массиваList – user3748551
Сделайте именно это: Итерайте в списке, удалите каждый пустой элемент (и помните, сколько вы удалили), затем повторно добавьте N null в конце списка. –