0
respostas

[Projeto] Padrão e Ordenação de List<E> com a classe Collections.sort

Estes desafios, no final de cada módulo, se tornam algo bem interessante. Por mais simples que possam ser, deixo aqui como ficou a minha resolução dos desafios 1 ao 4. Ainda sou bem iniciante, então qualquer dica que possa me ajudar é bem-vinda.

OBS: Para não deixar minha classe Main tão poluída, dividi cada desafio em uma classe própria e apenas fiz a inicialização e chamada dos métodos na Main.

Desafio 01

Crie uma lista de números inteiros e utilize o método Collections.sort para ordená-la em ordem crescente. Em seguida, imprima a lista ordenada.

@lombok.experimental.UtilityClass
public class ListInt {

    public static void integers() {
        List<Integer> list = new ArrayList<>();

        for (int i = 10; i > 0; i--) {
            list.add(i);
        }
        Collections.sort(list);

        for (Integer integer : list) {
            System.out.println(integer);
        }
    }
}

Desafio 02

Crie uma classe Titulo com um atributo nome do tipo String. Implemente a interface Comparable na classe para que seja possível ordenar uma lista de objetos Titulo.

@lombok.ToString()
@lombok.AllArgsConstructor(access = lombok.AccessLevel.PROTECTED)
public class Title implements Comparable<Title> {

    @lombok.Getter(value = lombok.AccessLevel.PUBLIC)
    @lombok.Setter(value = lombok.AccessLevel.PRIVATE)
    private String name;

    @Override
    public int compareTo(@NotNull Title title) {
        return this.name.compareTo(title.getName());
    }

}

Desafio 03

No Exercício 2, crie alguns objetos da classe Titulo e adicione-os a uma lista. Utilize o método Collections.sort para ordenar a lista e, em seguida, imprima os títulos ordenados.

public class TitleShow {

    public static void displayTitle() {
        List<Title> titles = new ArrayList<>();
        titles.add(new Title("Yu-Gi-Oh GX"));
        titles.add(new Title("Divergences"));
        titles.add(new Title("Supernatural"));

        Collections.sort(titles);

        for (Title title : titles) {
            System.out.println(title);
        }
    }

}

Desafio 04

Crie uma lista utilizando a interface List e instancie-a tanto como ArrayList quanto como LinkedList. Adicione elementos e imprima a lista, mostrando que é possível trocar facilmente a implementação.

@lombok.Getter(value = lombok.AccessLevel.PUBLIC)
@lombok.Setter(value = lombok.AccessLevel.PUBLIC)
@lombok.NoArgsConstructor(access = lombok.AccessLevel.PUBLIC)
public class ListSwapper {

    private List<Integer> list = new ArrayList<>();
    private List<Integer> list2 = new LinkedList<>();

    private void initializeLists() {
        for (int i = 1; i < 6; i++) {
            list.add(i);
            list2.add(i);
        }
    }

    public void printLists() {
        this.initializeLists();

        if (list.isEmpty()) return;

        for (Integer i : list) {
            System.out.println(i);
        }

        System.out.println(" ");

        if (list2.isEmpty()) return;

        for (Integer i : list2) {
            System.out.println(i);
        }
    }

}

E por fim, a class Main:

public class Main {
    public static void main(String[] args) {

        ListInt.integers();
        System.out.println(" ");
        TitleShow.displayTitle();
        System.out.println(" ");

        ListSwapper listSwapper = new ListSwapper();
        listSwapper.printLists();

    }
}