[quote=peczenyj]Beleza, eu executei e tive esses resultados:
T1: 740
T2: 479
T3: 27191[/quote]
Esse foi o teu T3 mesmo???
[quote=peczenyj]Beleza, eu executei e tive esses resultados:
T1: 740
T2: 479
T3: 27191[/quote]
Esse foi o teu T3 mesmo???
Foi o T3 original, usando [A-Z0-9]+
private boolean validarCaracteresNumeroLogico5(String numero) {
for (int i = 0; i < numero.length(); i++) {
char c = numero.charAt(i);
if ((c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) continue;
return false;
}
return true;
}
Quanto é que dá o benchmarking disso? É mais rápido que regex ou não?
Tem certeza, peczenyj???
[code]package teste;
import java.util.regex.Pattern;
public class Teste {
public static void main(String[] args) {
Teste t = new Teste();
String num = "";
final int size = 1000;
long t0 = System.currentTimeMillis();
for (int i = 0; i < size; i++) {
num += i;
t.validarCaracteresNumeroLogico(num);
}
long t1 = System.currentTimeMillis();
num = "";
for (int i = 0; i < size; i++) {
num += i;
t.validarCaracteresNumeroLogico2(num);
}
long t2 = System.currentTimeMillis();
num = "";
for (int i = 0; i < size; i++) {
num += i;
t.validarCaracteresNumeroLogico3(num);
}
long t3 = System.currentTimeMillis();
num = "";
for (int i = 0; i < size; i++) {
num += i;
t.validarCaracteresNumeroLogico4(num);
}
long t4 = System.currentTimeMillis();
num = "";
for (int i = 0; i < size; i++) {
num += i;
t.validarCaracteresNumeroLogico5(num);
}
long t5 = System.currentTimeMillis();
num = "";
for (int i = 0; i < size; i++) {
num += i;
t.validarCaracteresNumeroLogico6(num);
}
long t6 = System.currentTimeMillis();
num = "";
for (int i = 0; i < size; i++) {
num += i;
t.validarCaracteresNumeroLogico7(num);
}
long t7 = System.currentTimeMillis();
num = "";
for (int i = 0; i < size; i++) {
num += i;
t.validarCaracteresNumeroLogico8(num);
}
long t8 = System.currentTimeMillis();
System.out.println("T1: " + (t1 - t0));
System.out.println("T2: " + (t2 - t1));
System.out.println("T3: " + (t3 - t2));
System.out.println("T4: " + (t4 - t3));
System.out.println("T5: " + (t5 - t4));
System.out.println("T6: " + (t6 - t5));
System.out.println("T7: " + (t7 - t6));
System.out.println("T8: " + (t8 - t7));
}
private boolean validarCaracteresNumeroLogico(String numero) {
String charValidos = "ABCDEFGHIJKLMNOPQRSTUVXZWY0123456789";
for (int i = 0; i<numero.length();i++ ) {
if (charValidos.indexOf(numero.substring(i, i + 1)) >< 0) {
return false;
}
}
return true;
}
private boolean validarCaracteresNumeroLogico2(String numero) {
String charValidos = "ABCDEFGHIJKLMNOPQRSTUVXZWY0123456789";
for (int i = 0; i < numero.length(); i++) {
if (charValidos.indexOf(numero.charAt(i)) < 0) {
return false;
}
}
return true;
}
private boolean validarCaracteresNumeroLogico3(String numero) {
return numero.matches("[A-Z0-9]+");
}
private boolean validarCaracteresNumeroLogico4(String numero) {
return charValidosPattern2.matcher(numero).matches();
}
private boolean validarCaracteresNumeroLogico5(String numero) {
return numero.matches("\w+");
}
private boolean validarCaracteresNumeroLogico6(String numero) {
return Pattern.compile("^\w+$", Pattern.CASE_INSENSITIVE).matcher(numero).matches();
}
private boolean validarCaracteresNumeroLogico7(String numero) {
return charValidosPattern.matcher(numero).matches();
}
private boolean validarCaracteresNumeroLogico8(String numero) {
for (int i = 0; i < numero.length(); i++) {
char c = numero.charAt(i);
if ((c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) {
continue;
}
return false;
}
return true;
}
private static Pattern charValidosPattern = Pattern.compile("^\w+$",Pattern.CASE_INSENSITIVE);
private static Pattern charValidosPattern2 = Pattern.compile("[A-Z0-9]+",Pattern.CASE_INSENSITIVE);
}[/code]
Novos resultados!!!
Windows XP - JDK 1.5.0_06
JDeveloper 10g:
[quote]T1: 281
T2: 172
T3: 156
T4: 188
T5: 78
T6: 78
T7: 62
T8: 16[/quote]
Eclipse:
[quote]T1: 297
T2: 172
T3: 156
T4: 172
T5: 78
T6: 79
T7: 62
T8: 16[/quote]
A solução do victorwss parace ser a mais rápida.
Rodei aqui na minha maquina: Windows XP SP2 jdk: java version “1.6.0_03”
Eclipse Europa:
T1: 219
T2: 156
T3: 125
T4: 109
T5: 94
T6: 63
T7: 93
T8: 0
quantas dessas funcionam se a palavra tiver um ‘Ç’ ?
public class ClasseQualquer extends JFrame {
...
// OLHA A GAMBIARRA:
private class SetaFocoAForca extends Thread {
private Component alvo;
public SetaFocoAForca(Component alvo) {
super();
this.alvo = alvo;
if (alvo != null) this.start();
}
public void run() {
while (!ClasseQualquer.this.isVisible()) {
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// Ignora.
}
}
alvo.requestFocusInWindow();
}
}
...
}
Essa eu confesso. Eu sou o autor! Fui eu que fiz! Quando surge um problema dracônico e nada funciona, nada como uma gambiarrinha para fazer dar certo na marra, hehehe.
Quanto à execução dos métodos acima comentados, na minha máquina os tempos ficam variando entre:
T1: 31
T2: 141
T3: 140
T4: 110
T5: 62
T6: 78
T7: 63
T8: 31
T1: 31
T2: 141
T3: 125
T4: 94
T5: 78
T6: 62
T7: 78
T8: 16
Agora…
T1: 16
T2: 156
T3: 110
T4: 109
T5: 78
T6: 63
T7: 62
T8: 16
T1: 16
T2: 156
T3: 109
T4: 110
T5: 78
T6: 62
T7: 63
T8: 31
O certo seria fazer uma análise matemática dos algoritmos, não?
Tá, mas qual o seu ambiente? (SO, JRE, IDE, RAM)…
T1: 16
T2: 141
T3: 109
T4: 94
T5: 62
T6: 63
T7: 62
T8: 16
=>
Pentium 4HT, 2GB RAM, WIndows XP Professional, JDK 1.6_06, Eclipse Europa
[quote=Rafael Nunes]T1: 16
…[/quote]
??? Qual é o seu T1? Não é o original?
(ops, postei errado)
List<Object> params = new ArrayList<Object>();
[quote=peerless]Acabou de aprender Generics:
List<Object> params = new ArrayList<Object>();
[/quote]
KKK!!!
[quote=peerless]Acabou de aprender Generics:
List<Object> params = new ArrayList<Object>();
[/quote]
vai ver ele colocou isso pra parar de dar warning por generics hehe
[quote=peerless]Acabou de aprender Generics:
List<Object> params = new ArrayList<Object>();
[/quote]
Às vezes isso ocorre em código legado que está sendo migrado para java 5 ou superior.
[quote=victorwss][quote=peerless]Acabou de aprender Generics:
List<Object> params = new ArrayList<Object>();
[/quote]
Às vezes isso ocorre em código legado que está sendo migrado para java 5 ou superior.[/quote]
Pq?
Olha uma amostra do que estou tendo que dar manutenção !!! =[
if ( d == 0 ){
obterResgistros( 0 );
}else{
obterRegistros( d );
}
Que raciocínio lógico perfeito esse hein !!!
if (u.getCodigo() == 14 ){
this.jbExcluir.setEnabled( true );
}else{
this.jbExcluir.setEnabled( false );
}
E agora a mudança:
obterResgistros( d );
this.jbExcluir.setEnabled( u.getCodigo() == 14 ); // 14 - Permissão
E ainda tem muito mais =[
Fui !