Komparatory- porówanie stworzonej agregacji

0

Witam
Panowie jak stworzyć komparator, który porówna komputery np ProcessorComparator implements Comparator<Computer>??
Co do tej pory zrobiłem to stworzyłem klasy, pola i komparatory. Próbowałem porównać komperatorem podzespoły co było błędem.
Prosiłbym o podpowiedź

Mam stworzyć złożoną agregację:
Klasa Computer – będzie przechowywała następujące pola obiektowe:
Płyta główna – muszą być informację o sockecie, producencie, modelu itp.
Procesor – producent, model, taktowanie, ilość rdzeni, model, producent
Dysk twardy – rodzaj (HDD/SSD), pojemność, model, producent
Karta graficzna – wielkość szyny w Mbit, ilość pamięci VRAM, model, producent
Komparatory: MotherBoardComparator, ProcessorComparator, HardDriveComparator,
RamComparator oraz GraphicCardComparator. Kolejność elementów po których ma sortować dany komparator – wg. Twojego uznania :)

0

Jak chcesz sortować komputery to Computer implements Compartor<Computer> Computer implements Comparable<Computer> jeśli już. A co ten komparator robi, to juz jego sprawa, może wołać compareTo na kolejnych podzespołach. A jak zrobisz implements Comparator<Computer> to możesz porównywać jak chcesz.

0

Tak wygląda klasa Computer, dodatkowo są klasy procesor, płyta głowna itd z polami. W jaki sposób zrobić te zadanie??


public class Computer {


    Motherboard motherboard;
    Processor processor;
    HardDisk hardDisk;
    RAM ram;
    GraphicCard graphicCard;

    public Computer(Motherboard motherboard, Processor processor, HardDisk hardDisk, RAM ram, GraphicCard graphicCard) {
        this.motherboard = motherboard;
        this.processor = processor;
        this.hardDisk = hardDisk;
        this.ram = ram;
        this.graphicCard = graphicCard;
    }

    public Motherboard getMotherboard() {
        return motherboard;
    }

    public Processor getProcessor() {
        return processor;
    }

    public HardDisk getHardDisk() {
        return hardDisk;
    }

    public RAM getRam() {
        return ram;
    }

    public GraphicCard getGraphicCard() {
        return graphicCard;
    }

    @Override
    public String toString() {
        return "Computer{" +
                "motherboard=" + motherboard +
                ", proccesor=" + processor +
                ", hardDisk=" + hardDisk +
                ", ram=" + ram +
                ", graphicCard=" + graphicCard +
                '}';
    }

0

No robisz klasę ProcessorComparator implements Comparator<Computer> i implementujesz. Gdzie widzisz problem?

0

Przykładowa implementacja, ale w klasie Runner coś nie działą przy tworzeniu Computera

public class ProcessorComparator implements Comparator<Computer> {


    @Override
    public int compare(Computer o1, Computer o2) {
        int result = o1.getProcessor().getModel().compareTo(o2.getProcessor().getModel());
        if (result == 0)
            result = o1.getProcessor().getManufacturer().compareTo(o2.getProcessor().getManufacturer());
        if (result == 0)
            result = Double.compare(o2.getProcessor().getClocking(), o1.getProcessor().getClocking();
        if (result == 0)
            result = Integer.compare(o2.getProcessor().getNumberOfCores(), o1.getProcessor().getNumberOfCores());
        if (result == 0)
            result = Double.compare(o2.getProcessor().getGeneration(), o1.getProcessor().getGeneration();
        return result;

    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1