import java.io.*; import javax.swing.*; import java.awt.event.*; import java.util.ArrayList; import java.util.Collections; @SuppressWarnings("deprecation") public class OrdenarString extends JFrame { boolean boton=false; JPanel PANEL =new JPanel(); JMenuBar B = new JMenuBar(); JMenu MENU = new JMenu("Click Aquí"); JMenuItem M1 = new JMenuItem("Abrir Archivo"); JMenuItem M2 = new JMenuItem("Salir"); JTextArea TEXTO = new JTextArea(20,30); JScrollPane scroll = new JScrollPane(TEXTO); public OrdenarString() { super("Ejemplo de JFileChooser con M. de Burbuja"); setLocation(100,100); setSize(640,480); setJMenuBar(B); add(PANEL); PANEL.add(B); PANEL.add(scroll); B.add(MENU); MENU.add(M1); MENU.add(M2); M1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt) { abrir(); } }); M2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt) { System.exit(0); } }); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } void abrir() { try { String nombre=""; String textotemp=""; String orden=""; ArrayList lista = new ArrayList(); JFileChooser ARCHIVO=new JFileChooser(System.getProperty("user.dir")); ARCHIVO.showOpenDialog(this); File ABRIR=ARCHIVO.getSelectedFile(); if(ABRIR != null) { nombre=ARCHIVO.getSelectedFile().getName(); TEXTO.setText(""); FileReader FICHERO=new FileReader(ABRIR); BufferedReader LEER=new BufferedReader(FICHERO); while((textotemp=LEER.readLine()) != null) { lista.add(textotemp); } LEER.close(); Collections.sort(lista); for (int i=0;i<lista.size();i++){ orden+= lista.get(i).toString()+","; } TEXTO.append(orden); } } catch(FileNotFoundException exp) { JOptionPane.showMessageDialog(null, "El archivo no existe o no se"+ "encuentra en esta carpeta.","Error", JOptionPane.WARNING_MESSAGE); } catch(Exception exp) { System.out.println(exp); } } public static void main(String[] arg) { JOptionPane.showMessageDialog(null,"Ejemplo de Ordenamiento de Strings...n"); JOptionPane.showMessageDialog(null,"By Carlitox ("+ "http://calitoxenlaweb.blogspot.com)"); new OrdenarString(); } }
Para ver como funciona creamos un archivo que contenga nombres aleatorios, cada nombre debe estar separado por un salto de línea(enter), algunas de las cosas ya las he explicado anteriormente (enlace), pero vamos a explicar lo importante...
Primero que nada tenemos un "ArrayList" lo que es una lista en forma de arreglo, esto nos servirá para listar cada uno de los elementos que se leen desde el archivo y procesarlos de forma mas rápida y sencilla.
Luego tenemos
while((textotemp=LEER.readLine()) != null) { lista.add(textotemp); }
Con esto por cada "enter" que tenga el archivo contamos la cantidad de líneas, y como cada elemente esta delimitado de esta forma almacenamos la cantidad de elementos en la lista a medida que vamos leyendo cada línea.
Lo mas importante es el método "Collections.sort(lista)" que trabaja sobre el arreglo para ordenar los elementos que hemos almacenado en la misma. Ya por último agregamos al "TextArea" lo que se ha almacenado de forma ordenada con "orden+= lista.get(i).toString()".
Si queremos que cada elemento este delimitado por un salto de línea nos ubicamos en la línea de código:
orden+= lista.get(i).toString()+",";
Lo resaltado en rojo lo cambiamos por "\ n"(sin espacios), o por cualquier otro caracter como un guión, una coma o un punto. Para ordenar números simplemente buscamos la línea de código
lista.add(textotemp);
Y lo resaltado lo cambiamos por Double.parseDouble(textotemp), o por Integer.parseInt, Float o cualquier otro.
Recibe notificaciones por correo
Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.
Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión