Voglio determinare se una stringa è il nome di un mese e voglio farlo in tempi relativamente brevi. La funzione che è attualmente bloccato nel mio cervello è qualcosa di simile:Esiste un metodo più veloce per associare una stringa arbitraria al nome del mese in Java
boolean isaMonth(String str) {
String[] months = DateFormatSymbols.getInstance().getMonths();
String[] shortMonths = DateFormatSymbols.getInstance().getShortMonths();
int i;
for(i = 0; i<months.length(); ++i;) {
if(months[i].equals(str)) return true;
if(shortMonths[i].equals(str) return true;
}
return false;
}
Tuttavia, sarà procedante molto testo, passò una corda alla volta a questa funzione, e la maggior parte del tempo mi sarà sempre la il caso peggiore di passare attraverso l'intero ciclo e restituire false.
Ho visto un'altra domanda che parlava di un Regex per abbinare un nome di mese e un anno che potrebbe essere adattato per questa situazione. Il Regex sarebbe più veloce? C'è qualche altra soluzione che potrebbe essere più veloce?
per i principianti, è possibile spostare/rendere mesi, brevi variabili di membri statici di ShortMonth (allocare solo una volta) .. –
un regexp dovrebbe essere veloce. Una macchina a stati personalizzati più veloce. – SyntaxT3rr0r