avevo del codice già scritto, quindi ho aggiunto roba e cancellato l'inutile/superfluo. Mi scuso per l'eventuale cattivo stile di programmazione risultante
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.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]); } } }

Rispondi quotando