Avatar billede mka Praktikant
12. oktober 2016 - 17:59 Der er 4 kommentarer

Blue J, opgave

Hej! Jeg har fået til opgave at lave en kode, som gør, at jeg kan sortere nogle både i en marina udfra dens værdi, således at rækkefølgen er dyretse til billigste. Men det jeg gør, får den til at sortere billigst til dyrest. Nogle der kan hjælpe mig med at bytte om på rækkefølgen?:)
Avatar billede claes57 Ekspert
12. oktober 2016 - 18:55 #1
, Collections.reverseOrder()
mangler nok
Avatar billede arne_v Ekspert
12. oktober 2016 - 23:35 #2
Vi skal jo nok se lidt kode ...
Avatar billede Jonas Pedersen Praktikant
13. oktober 2016 - 15:31 #3
Hvis du bruger Java 8 og kender lidt til Lamda, så er her et eksempel:

[code]
import java.util.*;

public class Main {

    public static void main(String[] args) {
        List<Boat> boats = Arrays.asList(
                new Boat("Færge", 20000000),
                new Boat("Robåd", 2500),
                new Boat("Jolle", 20000)
        );

        printSorted(boats, Comparator.comparing(Boat::getPrice).reversed());
    }

    public static void printSorted(List<Boat> boats, Comparator<Boat> comparator) {
        boats.stream()
                .sorted(comparator)
                .forEach(System.out::println);
    }

    private static class Boat {

        private final String type;
        private final int price;

        private Boat(String type, int price) {
            this.type = type;
            this.price = price;
        }

        public String getType() {
            return type;
        }

        public int getPrice() {
            return price;
        }

        @Override
        public String toString() {
            return "Boat{" +
                    "type='" + type + '\'' +
                    ", price=" + price +
                    '}';
        }
    }
}
[/code]
Avatar billede Jonas Pedersen Praktikant
13. oktober 2016 - 15:50 #4
og et eksempel før Java 8. Her ligger selve sorteringen i compare() metoden.

import java.util.*;

public class BoatMain {

    public static void main(String[] args) {
        List<Boat> boats = Arrays.asList(
                new Boat("Færge", 20000000),
                new Boat("Robåd", 2500),
                new Boat("Jolle", 20000)
        );

        boats.sort(new Comparator<Boat>() {
            @Override
            public int compare(Boat o1, Boat o2) {
                if (o1.getPrice() < o2.getPrice()) {
                    return 1;
                } else if (o1.getPrice() > o2.getPrice()) {
                    return -1;
                } else {
                    return 0;
                }
            }
        });

        for (Boat boat : boats) {
            System.out.println(boat);
        }
    }

    private static class Boat {

        private final String type;
        private final int price;

        private Boat(String type, int price) {
            this.type = type;
            this.price = price;
        }

        public String getType() {
            return type;
        }

        public int getPrice() {
            return price;
        }

        @Override
        public String toString() {
            return "Boat{" +
                    "type='" + type + '\'' +
                    ", price=" + price +
                    '}';
        }
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester