package comparatori.videogioco;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {
	
	public static void main(String[] Args) {
		
		ArrayList<Videogioco> giochi = new ArrayList<Videogioco>();
		
		giochi.add(new Videogioco("The Last of Us Part II", "PS5", 2020, 39.99, 9));
		giochi.add(new Videogioco("Cyberpunk 2077", "PC", 2020, 29.99, 8));
		giochi.add(new Videogioco("Minecraft", "PC", 2011, 19.99, 10));
		giochi.add(new Videogioco("Ghost of Tsushima", "PS5", 2020, 49.99, 9));
		giochi.add(new Videogioco("Resident Evil 4 Remake", "PS5", 2023, 44.99, 9));
		giochi.add(new Videogioco("GTA V", "PC", 2013, 14.99, 8));
		giochi.add(new Videogioco("God of War Ragnarok", "PS5", 2022, 59.99, 10));
		giochi.add(new Videogioco("Fortnite", "PC", 2017, 0.0, 7));
		
		// Ordina mediante Comparable - compareTo & stampa
		System.out.println("ordina per prezzo crescente");
		Collections.sort(giochi);
		printList(giochi);
		System.out.println();
		
		// Ordina i videogiochi per titolo alfabetico crescente
		System.out.println("Ordina i videogiochi per titolo alfabetico crescente");
		Collections.sort(giochi, new ComparatorVideogioco1());
		printList(giochi);
		
		// Ordina dal voto più alto al più basso
		System.out.println("Ordina dal voto più alto al più basso");
		Collections.sort(giochi, new ComparatorVideogioco2());
		printList(giochi);
		
		// Multi 
		System.out.println("Multi");
		Collections.sort(giochi, new ComparatorVideogioco3());
		printList(giochi);
		
	}
	
	private static <T> void printList(List<T> lista) {
		System.out.print("{");
		for (int i = 0; i < lista.size(); i++) {
			System.out.print(" [");
			System.out.print(lista.get(i).toString());
			System.out.print("] ");
		}
		System.out.print("}");
	}
	
}
