Ciao a tutti ho un problema con l'overriding del etodo compareTo(): praticamente dovrei ordinare delle stringhe in un ArrayList ma in base all'ordine alfabetico di un loro carattere...ad esempio ho le stringhe:
- ciao
- abbastanza
- scemo
e le voglio ordinare in base al 2 carattere, dovrebbero comparirmi così:
- abbastanza
- scemo
- ciao
(b - c -i)
Io ho scritto il seguente codice:
public int compareTo(Object o) {
int carat = Integer.valueOf(carattere.getText());
String frase = String.valueOf((stringa.getText()).charAt(carat));
String fraseO = String.valueOf(((String)(o)).charAt(carat));
System.out.println(carat+" "+frase+" "+fraseO);
if (frase.compareTo(fraseO) == 1) return 1;
if (frase.compareTo(fraseO) == -1) return -1;
if (frase.compareTo(fraseO) == 0) return 0;
throw new UnsupportedOperationException("Not supported yet.");
}
dove carat è il numero del carattere in base al quale fare l'ordinamento, frase è la stringa che prende dalla JTextArea e fraseO è la stringa che confronta...al di là della correttezza dei confronti, quello che non capisco è come mai poprio non entra nel compare (infatti non stampa niente del system.out)..di seguito il contesto del codice:
Ciao ciao graziecodice:public class Ordina extends JPanel implements Comparable,ActionListener { private JTextArea stringa,carattere; static int x=10, y=10; private ArrayList stringhe; public Ordina(JTextArea stringa, JTextArea carattere) { this.stringa = stringa; this.carattere = carattere; stringhe = new ArrayList(); } public void paintComponent(Graphics g){ super.paintComponent(g); y = 10; for (int i=0;i<stringhe.size();i++) { g.drawString((String)stringhe.get(i), x, y); y += 10; } } public void actionPerformed(ActionEvent e) { Graphics g = this.getGraphics(); stringhe.add(stringa.getText()); System.out.println("sono in sort"); Collections.sort(stringhe); y = 10; for (int i=0;i<stringhe.size();i++) { this.repaint(); } //throw new UnsupportedOperationException("Not supported yet."); } public int compareTo(Object o) { int carat = Integer.valueOf(carattere.getText()); String frase = String.valueOf((stringa.getText()).charAt(carat)); String fraseO = String.valueOf(((String)(o)).charAt(carat)); System.out.println(carat+" "+frase+" "+fraseO); if (frase.compareTo(fraseO) == 1) return 1; if (frase.compareTo(fraseO) == -1) return -1; if (frase.compareTo(fraseO) == 0) return 0; throw new UnsupportedOperationException("Not supported yet."); } }

Rispondi quotando
):