avevo del codice già scritto, quindi ho aggiunto roba e cancellato l'inutile/superfluo. Mi scuso per l'eventuale cattivo stile di programmazione risultante
codice:
import java.util.*;
/**
*
* @author Andrea
*/
public class Esercizio45 {
private class MyComparator implements Comparator<String> {
public int compare(String s1, String s2) {
String[] split_1 = s1.split("/");
String[] split_2 = s2.split("/");
Integer i1_1 = Integer.parseInt(split_1[0]);
Integer i1_2 = Integer.parseInt(split_1[1]);
Integer i2_1 = Integer.parseInt(split_2[0]);
Integer i2_2 = Integer.parseInt(split_2[1]);
if (i1_1.compareTo(i2_1) == 0) {
if (i1_2.compareTo(i2_2) == 0) {
return split_1[2].compareTo(split_2[2]);
}
else {
return i1_2.compareTo(i2_2);
}
}
else {
return i1_1.compareTo(i2_1);
}
}
}
String[][] matrix = new String[][] {
{"100/20/AB","cento venti alpha bravo"},
{"800/01/DF", "ottocento uno delta foxtrot"},
{"1200/10/AB", "milleduecento dieci alpha bravo"},
{"800/20/AB", "ottocento venti alpha bravo"},
{"100/20/DF", "cento venti delta foxtrot"},
{"900/05/DF", "novecento cinque delta foxtrot"}
};
TreeMap<String, String> map = new TreeMap<String, String>(new MyComparator());
public void makeTree() {
for (int i = 0; i < matrix.length; i++) {
map.put(matrix[i][0], matrix[i][1]);
}
}
public String[][] orderedMatrix() {
Set<String> set = map.keySet();
String[][] temp = new String[matrix.length][matrix[0].length];
Iterator<String> iterator = set.iterator();
int i = 0;
while (iterator.hasNext()) {
String elem = iterator.next();
temp[i][0] = elem;
temp[i][1] = map.get(elem);
i++;
}
return temp;
}
public static void main (String[] args) {
Esercizio45 e = new Esercizio45();
e.makeTree();
String[][] ordered = e.orderedMatrix();
for (int i = 0; i < ordered.length; i++) {
System.out.println(ordered[i][0]+" --> "+ ordered[i][1]);
}
}
}
Raccomandazione: un TreeMap non prevede che vi possano essere chiavi identiche. Non so se sia il tuo caso, però potresti voler aggiungere della logica ulteriore per gestire l'eventuale caso.