Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di mainetz
    Registrato dal
    Oct 2003
    Messaggi
    132

    [JAVA] Ordinare un array di stringe.

    Ciao a tutti.

    Ho la necessità di ordinare un arrey di strighe fatte in questo modo "1.methods", "22.methods", "3.methods","10.methods","11.methods" secondo l'ordine numerico ovvero:


    "1.methods"
    "3.methods"
    "10.methods"
    "11.methods"
    "22.methods"

    qualcuno ha idee su come posso fare??

    Grazie mille!

    mainetz.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Ordinare un array di stringe.

    Originariamente inviato da mainetz
    Ho la necessità di ordinare un arrey di strighe fatte in questo modo "1.methods", "22.methods", "3.methods","10.methods","11.methods" secondo l'ordine numerico ovvero:


    "1.methods"
    "3.methods"
    "10.methods"
    "11.methods"
    "22.methods"

    qualcuno ha idee su come posso fare??
    La cosa più semplice è implementare un Comparator (per definire l'ordine) e passarlo al metodo sort() di java.util.Arrays.

    La questione semmai è come estrarre il numero. Ma non è difficile. Se dopo il numero c'è sempre un '.' basta fare un indexOf per cercare il '.', quindi prendere la sottostringa con il numero e convertirla in int con Integer.parseInt().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di mainetz
    Registrato dal
    Oct 2003
    Messaggi
    132
    grazie ancora!

    mainetz!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Ma con le espressioni regolari viene ancora più bello!

    codice:
    import java.util.*;
    import java.util.regex.*;
    
    public class Prova
    {
        public static void main (String[] args)
        {
            try
            {
                String[] arr = { "10.methods", "topolino", "22.methods", "pippo", "3.methods",
                                 "1.methods", "11.methods", "minnie", "45aaa", "8ccc" };
    
                Arrays.sort (arr, new InitialNumberStringComparator ());
    
                System.out.println (Arrays.toString (arr));
            }
            catch (Exception e)
            {
                System.out.println (e);
            }
        }
    }
    
    class InitialNumberStringComparator implements Comparator<String>
    {
        private Pattern pattern = Pattern.compile ("^(\\d+)");
        private Matcher matcher1 = pattern.matcher ("");
        private Matcher matcher2 = pattern.matcher ("");
    
        public int compare (String s1, String s2)
        {
            if (matcher1.reset (s1).find () && matcher2.reset (s2).find ())
            {
                int i1 = Integer.parseInt (matcher1.group (1));
                int i2 = Integer.parseInt (matcher2.group (1));
    
                return i1 > i2 ? +1 : i1 < i2 ? -1 : 0;
            }
            else
                return s1.compareTo (s2);
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.