Como armazenar palavras de um arquivo .txt em um HashSet<String>?

4 respostas
L

Pessoal,

Olá!! Sou iniciante na área de desenvolvimento Java e estou com uma dúvida no meu método que lê um arquivo .txt e deverá armazenar cada uma das palavras do arquivo em um HashSet. Segue abaixo, trechos do meu metódo:

static void leHashSet(String nomeArquivo){

InputStream is = new FileInputStream(arquivo.txt);

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

String linha;
String [] palavrasDoArquivo = nomeArquivo.split(",|:|. ");

HashSet set = new HashSet();

set.addAll(palavrasDoArquivo); // Esse trecho do código está errado. Como faço para adicionar as palavras armazenadas num array do tipo String num HashSet???

}

Na compilação há dois erros, o primeiro diz que não encontrou o arquivo indicado e o outro é o comentário que mencionei acima após a linha de código set.add(palavrasDoArquivo); Como faço para adicionar as palavras do arquivo .txt armazenas num array em um HashSet?

Esse é um exercício que tenho de fazer, mas estou com esse problema. E, os dois próximos métodos que tenho de fazer é um usando TreeSet e o LinkedList, ambos, tenho que ler um arquivo .txt separar as palavras do arquivo e adiciona-lás nas estruturas de dados correspondentes. Pois, depois na saída do problema tenho que mencionar as palavras distintas que estão dentro do arquivo.

Se alguém puder ajudar, desde já agradeço.

Att.

Leandro

4 Respostas

nel

Leandro, antes de mais nada, tu precisa usar a tag code quando postar código, é o correto.
Depois, sabe uma função “básica” da interface Set ? Se você adicionar duas Strings “Leandro”, ele vai ter tamanho 1, pois não aceita repetição. É isso mesmo ?

Bom, para adicionar um array ao set basta fazer:

String[] palavras = new String[] { "João", "Augusto", "Joaquim", "Maria" }; Set<String> set = new HashSet<String> (Arrays.asList(palavras)); // OU (prefiro a opção acima...economiza linha de código) // set.addAll (Arrays.asList(palavras));

Classe Arrays.

Rodrigo_Sasaki

Em relação ao outro erro, creio que você deva informar o caminho absoluto do arquivo,

você faz: InputStream is = new FileInputStream("arquivo.txt"); Agora se o arquivo estiver na raiz do disco C, por exemplo, você deve fazer assim: InputStream is = new FileInputStream("C:\\arquivo.txt")

nel

digaoneves:
Em relação ao outro erro, creio que você deva informar o caminho absoluto do arquivo,

você faz: InputStream is = new FileInputStream("arquivo.txt"); Agora se o arquivo estiver na raiz do disco C, por exemplo, você deve fazer assim: InputStream is = new FileInputStream("C:\\arquivo.txt")

Esqueci do erro rs…
Um conselho Leandro, Java é “multiplataforma” devido a sua JVM, mas temos de saber utilizar os recursos dele para que isso se torne realidade. Por isso, quando trabalhar com arquivos, use o separator do File, ok ? Assim:

String path = “C:” + File.separator + “Pasta1” + File.separator + “arquivo.txt”;

Abraços !

L

Pessoal

Agradeço pelas suas considerações. Elas acabaram agregando alguns conceitos importante, principalmente, a questão da função do set de não armazenar palavras repetidas.

Obrigado e até a próxima dúvida. rsrsr

Abraços.

Criado 10 de junho de 2012
Ultima resposta 11 de jun. de 2012
Respostas 4
Participantes 3