Tô querendo fazer um índice remissivo usando uma tabela HASH onde
cada palavra inserida na tabela iria para a posição certa de acordo com
a primeira letra
bom o metodo length() traz o tamanho da sua string e vc pode percorrer ela usando chatAt() que inicia do 0. lembrando que para usar codigo hash… é interessante vc implementar o metodo hashCode() para ter iteração de forma eficiente…
Você quer remover acentos das palavras, não? Só conheço um jeito rápido de fazer isso, que é na base da "força bruta". Ou seja, algo como "se for "á", trocar por "a" e assim por diante.)
(É claro que se você for usar só letras acentuadas da língua portuguesa você pode levar em conta que o valor numérico delas não passa de 256, e indexar um array por elas. Por exemplo, você poderia criar um array de caracteres com 256 posições, onde o índice é o código da letra acentuada, e o valor é o código da letra sem acento. Vou dar um exemplo:
class RemoverAcentos {
static String acentuado = "çÇáéíóúýÁÉÍÓÚÝàèìòùÀÈÌÒÙãõñäëïöüÿÄËÏÖÜÃÕÑâêîôûÂÊÎÔÛ";
static String semAcento = "cCaeiouyAEIOUYaeiouAEIOUaonaeiouyAEIOUAONaeiouAEIOU";
static char[] tabela;
static {
tabela = new char[256];
for (int i = 0; i < tabela.length; ++i) {
tabela [i] = (char) i;
}
for (int i = 0; i < acentuado.length(); ++i) {
tabela [acentuado.charAt(i)] = semAcento.charAt(i);
}
}
public static String remover (final String s) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); ++i) {
char ch = s.charAt (i);
if (ch < 256) {
sb.append (tabela [ch]);
} else {
sb.append (ch);
}
}
return sb.toString();
}
public static void main(String[] args) {
String s = "Gisele Bündchen da Conceição e Silva foi batizada assim em homenagem à sua
conterrânea de Horizontina, RS.";
s = RemoverAcentos.remover (s);
System.out.println (s);
}
}
Veja se ele imprime a frase original sem acentos ou não.
Na verdade quanto as variaveis estáticas.
Deve ter feito assim para poder chamar esses métodos sem instanciar um novo objeto.
Mas quanto ao atributo tabela, esse sim deve ser estático para poder ser acessado do bloco.
Agora falando sobre a carga da classe.
Quando um objeto é instanciado, se ele nunca foi utilizado antes, o java busca a classe e carrega no chamado “classloader” em memória (PermGen);