Необходимо из списка чисел составить новый список, состоящий из чисел, которые останутся на своем месте список отсортировать по возрастанию, например:
{ 3, 1, 3, 7, 7, 5, 9, 9, 15, 12, 10 } → { 3, 7, 9, 9, 12 }
самый простой вариант – создать дополнительный список из элементов переданного списка, новый список отсортировать, а затем сравнивать элементы двух списков
package com.company;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> din = new ArrayList<>(5);
din.add(3);
din.add(1);
din.add(3);
din.add(7);
din.add(7);
din.add(5);
din.add(9);
din.add(9);
din.add(15);
din.add(12);
din.add(10);
ArrayList<Integer> din1 = new ArrayList<>(5);
din1.add(3);
din1.add(1);
din1.add(3);
din1.add(7);
din1.add(7);
din1.add(5);
din1.add(9);
din1.add(9);
din1.add(15);
din1.add(12);
din1.add(10);
Collections.sort(din1);
for(int i = 0; i<=din1.size(); i++){
if(din.get(i) == din1.get(i)){
din1.remove(i);
}
System.out.print(din1.get(i));
}
}
}
Выводит {1,3,5,7,9,9,10,12} ,а не { 3, 7, 9, 9, 12 }
Действия:
Пример:
ArrayList<Integer> dinSorted = new ArrayList<>(din);
Collections.sort(dinSorted);
ArrayList<Integer> items = new ArrayList<>();
for (int i = 0; i < din.size(); i++) {
Integer value = din.get(i);
if (value.equals(dinSorted.get(i))) {
items.add(value);
}
}
System.out.println(items); // [3, 7, 9, 9, 12]
В-нулевых, i < din1.size()
.
Во-первых, надо проверять не на равенство, а на неравенство.
А во-вторых, надо идти с конца - после первого удаления индексация двух списков рассинхронизируется.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В языке программирования Java всё является объектом, исключение составляют примитивыКонтейнером для примитивов являются переменные примитивных...
JVM транслирует или интерпретирует байт-код в машинный код, который откомпилировал компилятор javac?
Не удается никак собрать исполняемый жарникСобираю проект как и через project structure - artifact - jar так и через javafx application
Есть подозрение, что в приложении происходит фрагментация кучиJVM запускается с параметрами -Xms1g -Xmx2g