Pessoal estou precisando de umas dicas para finalizar um trabalho.
Preciso processar centenas de arquivos contendo vários textos, no final separar gerar um CSV contendo todas as palavras e as repetições.
Isso já está sendo feito, e crio um CSV seguindo o modelo abaixo.
javali;5
uniao;2
leitao;6
porcos;3
universo;1
pessoa;6
Agora tenho de utilizar um TreeMap para realizar uma busca nesse CSV, onde a busca possa ser feita da seguinte maneira:
Como parametro de entrada passo: uni*
Como resposta espero:
universo
uniao
A parte da criação/leitura/interpretação do CSV já está funcionando belezinha, só não sei como inserir esses registros na TreeMap e realizar a busca.
importjava.util.*;classTesteSubMap{publicstaticvoidmain(String[]args){SortedMap<String,String>map=newTreeMap<String,String>();map.put("universo","em desencanto");map.put("uniao","o melhor acucar");map.put("planeta","Marte");map.put("resistencia","eh inutil");for(SortedMap.Entry<String,String>entry:map.subMap("uni","uni"+"\uFFFF").entrySet()){System.out.println(entry.getKey()+"="+entry.getValue());}}}
N
nooorton
Nó, muito mais simples que eu imaginava
Muito obrigado, vai atender perfeitamente para o que eu preciso.
Só tenho mais uma dúvida. O que seria “\uFFFF” ?
E
entanglement
subMap tem 2 parâmetros: o valor inicial e o final.
O inicial é incluído no submapa, e o final é excluído do submapa.
Vou dar um exemplo com números: digamos que você tenha o conjunto dos números de 1 até 100 e quer mostrar os números de 50 até 59. Se for usar subMap, você tem de passar (50, 60), não 50, 59.
O uso de “\uFFFF” é o seguinte: esse caracter é o último caracter Unicode possível, portanto com certeza qualquer string que comece por “uni” vai ser incluída, exceto uma que comece por uni e que tenha essa letra “\uFFFF”.
N
nooorton
Óh sim, compreendi
No caso se precisa-se pegar tudo que termina com “uni” eu usaria o:
for (Entry<String, Integer> entry : arvore.subMap ("\u0000" , "uni").entrySet()) {
System.out.println (entry.getKey() + "=" + entry.getValue());
}
Seria isso para o caso reverso?
N
nooorton
Para resolver o problema do: * fiz da seguinte maneira
Completando o exemplo para os casos “termina com ___” e “contém ___”.
importjava.util.*;classTesteSubMap{privatestaticStringreverse(finalStringoriginal){returnnewStringBuilder(original).reverse().toString();}publicstaticvoidmain(String[]args){// Tudo que começa por "uni"SortedMap<String,String>map=newTreeMap<String,String>();map.put("universo","em desencanto");map.put("uniao","o melhor acucar");map.put("planeta","Marte");map.put("resistencia","eh inutil");System.out.println("-- Tudo que começa por 'uni' --");for(SortedMap.Entry<String,String>entry:map.subMap("uni","uni"+"\uFFFF").entrySet()){System.out.println(entry.getKey()+"="+entry.getValue());}// Tudo que termina com "ado"SortedMap<String,String>reverseMap=newTreeMap<String,String>();reverseMap.put(reverse("deputado"),"Joselito Araujo");reverseMap.put(reverse("Encantado"),"Rio Grande do Sul");reverseMap.put(reverse("expiada"),"pagou por todas as suas culpas");reverseMap.put(reverse("Encantado"),"Rio Grande do Sul");reverseMap.put(reverse("deployed"),"also known as distributed");System.out.println("-- Tudo que termina em 'ado' - forma 1 --");for(SortedMap.Entry<String,String>entry:reverseMap.subMap(reverse("ado"),reverse("ado"+"\uFFFF")).entrySet()){System.out.println(reverse(entry.getKey())+"="+entry.getValue());}// Outra maneirareverseMap=newTreeMap<String,String>(newComparator<String>(){publicintcompare(Strings1,Strings2){returnreverse(s1).compareTo(reverse(s2));}});reverseMap.put("deputado","Joselito Araujo");reverseMap.put("Encantado","Rio Grande do Sul");reverseMap.put("expiada","pagou por todas as suas culpas");reverseMap.put("Encantado","Rio Grande do Sul");reverseMap.put("deployed","also known as distributed");System.out.println("-- Tudo que termina em 'ado' - forma 2 --");for(SortedMap.Entry<String,String>entry:reverseMap.subMap("ado","ado"+"\uFFFF").entrySet()){System.out.println(entry.getKey()+"="+entry.getValue());}// Tudo que tem "men" no meio// Neste caso, tanto faz se é um TreeMap, um HashMap etc., já que você vai ter de varrer o mapa completo. // Supondo que seja um map:Map<String,String>mapa=newHashMap<String,String>();mapa.put("realmente","finalmente");mapa.put("amenidade","docilidade");mapa.put("recuperação","superação");mapa.put("bimensal","assinatura");System.out.println("-- Tudo que contém 'men' --");for(Map.Entry<String,String>entry:mapa.entrySet()){if(entry.getKey().contains("men"))System.out.println(entry.getKey()+"="+entry.getValue());}}}