Сортировка по критерия не используя дополнительные коллекции

260
08 ноября 2021, 08:10

Есть не отсортированная коллекция с заявками, потом в цикле в зависимости от условия добавляется в нужную коллекцию, позже объекты в коллекциях сортируются по времени создания и потом добавляются в одну, есть способ сделать такую сортировку без помощи вспомогательных коллекций?

    package main.comparator;
public class CarForSort implements Comparable {
    private String color;
    private String bodyStyle;
    private String Make;
    private String Model;
    private Integer year;
    public CarForSort(String color, String bodyStyle, String make, String model, int year) {
        this.color = color;
        this.bodyStyle = bodyStyle;
        Make = make;
        Model = model;
        this.year = year;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public String getBodyStyle() {
        return bodyStyle;
    }
    public void setBodyStyle(String bodyStyle) {
        this.bodyStyle = bodyStyle;
    }
    public String getMake() {
        return Make;
    }
    public void setMake(String make) {
        Make = make;
    }
    public String getModel() {
        return Model;
    }
    public void setModel(String model) {
        Model = model;
    }
    public int getYear() {
        return year;
    }
    public void setYear(int year) {
        this.year = year;
    }
    @Override
    public int compareTo(Object o) {
        return 0;
    }
}

и

package main.comparator;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Sort {
    public static void main(String[] args) {
        CarForSort first = new CarForSort("orange", "coupe",
                "bmw", "3", 1992);
        CarForSort second = new CarForSort("black", "cabriolet",
                "bmw", "6", 2008);
        CarForSort third = new CarForSort("black", "hatchback",
                "opel", "astra", 2000);
        CarForSort fourth = new CarForSort("red", "suv",
                "mercedes", "ml", 1992);
        CarForSort fifth = new CarForSort("blue", "sedan",
                "kia", "rio", 2008);
        CarForSort sixth = new CarForSort("gray", "sedan",
                "tesla", "moles3", 2019);
        CarForSort seventh = new CarForSort("red", "sedan",
                "tesla", "model_s", 2019);
        CarForSort eigth = new CarForSort("green", "sedan",
                "bmw", "5", 1993);
        CarForSort ninth = new CarForSort("orange", "sedan",
                "bmw", "7", 1994);
        CarForSort tenth = new CarForSort("blue", "coupe",
                "bmw", "6", 2001);
        CarForSort eventh = new CarForSort("red", "sedan",
                "bmw", "3", 1998);
        CarForSort twelwth = new CarForSort("orange", "sedan",
                "bmw", "7", 1997);
        CarForSort thirteenth = new CarForSort("blue", "sedan",
                "opel", "omega", 2000);
        CarForSort fourteenth = new CarForSort("orange", "white",
                "opel", "vectra", 1999);
        CarForSort fiftenth = new CarForSort("black", "coupe",
                "kia", "stinger", 2019);
        CarForSort sixteenth = new CarForSort("orange", "sedan",
                "bmw", "7", 2017);
        CarForSort seventeenth = new CarForSort("orange", "coupe",
                "bmw", "3", 1992);
        CarForSort eighteenth = new CarForSort("orange", "coupe",
                "bmw", "6", 2014);
        CarForSort opel = new CarForSort("orange", "coupe",
                "astra", "4", 1998);
        List<CarForSort> notSort = new ArrayList<>();
        notSort.add(first);
        notSort.add(second);
        notSort.add(third);
        notSort.add(fourth);
        notSort.add(fifth);
        notSort.add(sixth);
        notSort.add(seventh);
        notSort.add(eigth);
        notSort.add(ninth);
        notSort.add(tenth);
        notSort.add(eventh);
        notSort.add(twelwth);
        notSort.add(thirteenth);
        notSort.add(fourteenth);
        notSort.add(fiftenth);
        notSort.add(sixteenth);
        notSort.add(seventh);
        notSort.add(eighteenth);
        notSort.add(opel);
        notSort.add(seventeenth);
        List<CarForSort> firstSort = new ArrayList<>();
        List<CarForSort> secondSort = new ArrayList<>();
        List<CarForSort> thirdSort = new ArrayList<>();
        List<CarForSort> fourthSort = new ArrayList<>();
        List<CarForSort> fifthSort = new ArrayList<>();
        for (CarForSort car : notSort) {
            if (car.getMake().equals("bmw") && car.getColor().equals("orange")) {
                firstSort.add(car);
                continue;
            }
            if (car.getMake().equals("opel") && car.getColor().equals("black")) {
                secondSort.add(car);
                continue;
            }
            if (car.getMake().equals("opel") && car.getBodyStyle().equals("sedan")) {
                thirdSort.add(car);
                continue;
            }
            if (car.getMake().equals("tesla") && car.getColor().equals("moles3")) {
                fourthSort.add(car);
                continue;
            }
            fifthSort.add(car);
        }
        List<CarForSort> result = new ArrayList<>();
        result.addAll(firstSort
                .stream()
                .sorted(CarForSort::compareTo)
                .collect(Collectors.toList()));
        result.addAll(secondSort
                .stream()
                .sorted(CarForSort::compareTo)
                .collect(Collectors.toList()));
        result.addAll(thirdSort
                .stream()
                .sorted(CarForSort::compareTo)
                .collect(Collectors.toList()));
        result.addAll(fourthSort
                .stream()
                .sorted(CarForSort::compareTo)
                .collect(Collectors.toList()));
        result.addAll(fifthSort
                .stream()
                .sorted(CarForSort::compareTo)
                .collect(Collectors.toList()));
        result.forEach(e -> {
            System.out.println(e.getMake() + " " + e.getModel() + " " + e.getColor() + " " + e.getBodyStyle() + " " + e.getYear());
        });
    }
}
READ ALSO
Какие существую javaFX дизайнеры для Eclipse или Windows?

Какие существую javaFX дизайнеры для Eclipse или Windows?

Scene Builder продолжает развиваться, правда, уже под крылом Gluon

179
JUNIT тесты в многомодульном проекте Spring Boot

JUNIT тесты в многомодульном проекте Spring Boot

Имеется Spring Boot многомодульное приложение, с настройкой бд через JNDI, как правильно запустить Junit тесты? Мой тест сейчас аннотирован так:

183
Запуск процесса из Java возвращает код 137

Запуск процесса из Java возвращает код 137

Я запускаю скрипт Perl из Java примерно таким образом:

153
Как прочитать матрицу из файла (java)?

Как прочитать матрицу из файла (java)?

Интересует чтение матрицы и ее запись в два arraysНужно считать размерность матрицы

165