/* import java.util.Scanner; import java.util.ArrayList; */ import java.util.*; import java.io.*; public class ListaSimple { /* Permite guardar la informacion dentro de la lista en un archivo para posteriormente recuperarla. */ public void guardar(List lista) { // Nuestro archivo donde guardaremos la informacion. FileWriter fichero = null; // Nuestro 'lapiz' que usaremos para escribir. PrintWriter pw = null; try { // Abrimos o creamos nuestro archivo. fichero = new FileWriter("./lista.txt"); pw = new PrintWriter(fichero); /* for(int i = 0; i < lista.size(); i++){ pw.println(lista.get(i)); }*/ // Otra opcion de recorrer una lista. Se llama for-each // y podemos leerlo como: Para todo n en lista. for(int n : lista) { pw.println(n); } } catch (Exception e) { e.printStackTrace(); } finally { try { // Nuevamente aprovechamos el finally para // asegurarnos que se cierra el fichero. if (null != fichero) fichero.close(); } catch (Exception e2) { e2.printStackTrace(); } } } /* Nos permite recuperar la informacion guardada en el archivo. */ public void cargar(List lista) { File archivo = null; FileReader fr = null; BufferedReader br = null; try { // Apertura del fichero y creacion de BufferedReader para poder // hacer una lectura comoda (disponer del metodo readLine()). archivo = new File ("./lista.txt"); fr = new FileReader (archivo); br = new BufferedReader(fr); // Leemos la primera linea del archivo String linea = br.readLine(); // Mientras no lleguemos al final del archivo // que vaya agregando la informacion a la lista. while(linea != null) { lista.add(Integer.parseInt(linea)); // Pasamos a la siguiente linea del archivo linea = br.readLine(); } } catch(Exception e) { e.printStackTrace(); } finally { // En el finally cerramos el fichero, para asegurarnos // que se cierra tanto si todo va bien como si salta // una excepcion. try { if( null != fr ) { fr.close(); } } catch (Exception e2) { e2.printStackTrace(); } } } // Visualiza el menu public void visualizaMenu() { System.out.println("\nMenu"); System.out.println(""); System.out.println("1) Agregar al final"); System.out.println("2) Agregar por posicion"); System.out.println("3) Modificar"); System.out.println("4) Borrar"); System.out.println("5) Visualizar todos"); System.out.println("6) Visualiza un elemento"); System.out.println("7) Guardar"); System.out.println("8) Cargar info."); System.out.println("0) Salir"); } // Metodo para trabajar un lista simple de enteros. public void listaSimpleInt() { /* int -> Integer double -> Double float -> Float boolean -> Boolean */ List l = new ArrayList(); Scanner teclado = new Scanner(System.in); int op = 0, act = 0, valor = 0; do { visualizaMenu(); System.out.println("\nOpcion: "); op = teclado.nextInt(); switch(op) { // Salir case 0: break; // Agregar al final case 1: System.out.println("Valor?"); valor = teclado.nextInt(); l.add(valor); break; // Agregar por posicion case 2: do { System.out.println("Posicion?"); act = teclado.nextInt(); if(act < 0 || act >= l.size()) { System.out.println("Fuera de rango [0-" + (l.size() - 1) + "]"); } } while(act < 0 || act >= l.size()); System.out.println("Valor?"); valor = teclado.nextInt(); l.add(act, valor); break; // Modificar case 3: do { System.out.println("Posicion?"); act = teclado.nextInt(); if(act < 0 || act >= l.size()) { System.out.println("Fuera de rango [0-" + (l.size() - 1) + "]"); } } while(act < 0 || act >= l.size()); System.out.println("Nuevo valor? "); valor = teclado.nextInt(); l.set(act, valor); break; // Borrar case 4: do { System.out.println("Posicion?"); act = teclado.nextInt(); if(act < 0 || act >= l.size()) { System.out.println("Fuera de rango [0-" + (l.size() - 1) + "]"); } } while(act < 0 || act >= l.size()); l.remove(act); break; // Visualizar todos case 5: for(int i = 0; i < l.size(); i++) { System.out.println(i + " --> " + l.get(i)); } break; // Visualizar un elem. case 6: do { System.out.println("Posicion?"); act = teclado.nextInt(); if(act < 0 || act >= l.size()) { System.out.println("Fuera de rango [0-" + (l.size() - 1) + "]"); } } while(act < 0 || act >= l.size()); System.out.println(act + " --> " + l.get(act)); break; // Guardar case 7: guardar(l); break; // Cargar info case 8: cargar(l); break; default: System.out.println("Opcion invalida"); } } while(op != 0); } // HACER los metodos para cadenas y datos abstractos. // public void listaSimpleString() {} // public void listaSimplePersona() {} public static void main(String[] args) { ListaSimple ls = new ListaSimple(); // Faltaria hacer un menu para elegir cualquiera de // las 3 opciones: ls.listaSimpleInt(); // ls.listaSimpleString(); // ls.listaSimplePersona(); } }