package adda.ej2.common; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; import us.lsi.common.Files2; import us.lsi.common.String2; public class DatosCesta { public static int N; // productos public static int M; // categorias public static int PRES; private static List productos; private static List categorias; public static record Producto(Integer id, Integer precio, Integer categoria, Integer valoracion) { public static Producto of(String s) { List datos = Stream.of(s.split(":")) .map(Integer::valueOf).toList(); return new Producto(datos.get(0), datos.get(1), datos.get(2), datos.get(3)); } } public static void toConsole() { String2.toConsole("Presupuesto: %d", PRES); String2.toConsole(productos, "Cesta de productos:"); String2.toConsole(String2.linea()); } public static void iniDatos(String fichero) { List lineas = Files2.linesFromFile(fichero); List productosStrings = lineas.subList(2, lineas.size()); PRES = Integer.valueOf(lineas.get(0).replace("Presupuesto = ", "")); productos = new ArrayList<>(); for(String producto : productosStrings) { productos.add(Producto.of(producto)); } categorias = productos.stream().map(Producto::categoria).distinct().toList(); N = productos.size(); M = (int) productos.stream() .map(Producto::categoria) .distinct().count(); } public static Integer getN() { return N; } public static Integer getM() { return M; } public static Integer getPrecio(Integer i) { return productos.get(i).precio(); } public static Integer getValoracion(Integer i) { return productos.get(i).valoracion(); } public static Integer getCategoria(Integer i) { return productos.get(i).categoria(); } public static Integer tieneCategoria(Integer i, Integer j) { return productos.get(i).categoria.equals(categorias.get(j)) ? 1 : 0; } public static Integer getPresupuesto() { return PRES; } public static Producto getProducto(int i) { return productos.get(i); } public static void main(String[] args) { iniDatos("ficheros/ej2/Ejercicio2DatosEntrada1.txt"); } }