Problema com Leitura de arquivo

Estou tentando ler os atores presentes em cada filme, porém atores.size() retorna 109, alguem sabe pq?

Hashtable atores = new Hashtable();

Scanner f = new Scanner(new File("input-top-grossing.txt")); while (f.hasNext()) { String linha = f.nextLine(); String[] elementos = linha.split("/"); for (int i = 1; i < elementos.length; i++) { Vector filmeAtor = new Vector(); atores.put(elementos[i], filmeAtor); } } System.out.println(atores); System.out.println(atores.size()); }

Aqui vai o link do .txt de entrada http://personal.denison.edu/~havill/111f09/projects/proj7/files/input-top-grossing.txt

Cara, Só para temos um rumo:
A resposta deve ser quanto?

hmm… porque existem 109 atores? :lol:

dei uma olhada no arquivo, e chutando baixo, aquilo tme no minimo uns 300 atores kkkkkk

Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException

acho que quando entra em outra linha ele esta se perdendo… o correto seria cada um em uma linha

[quote=digaoneves]Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException[/quote]

what?? pq try e catch resolve o problema? :shock:

Magias do java kkkk

No meu exibe a quantidade de 9921

try {
            FileInputStream input = new FileInputStream(new File("C:/atores.txt"));
            
            byte[] b = new byte[input.available()];
            input.read(b);
            
            String[] atores = new String(b).split("/");
            
            System.out.println(atores.length);
            System.out.println(new String(b));
        } catch (Exception e) {
            e.printStackTrace();
        }

[quote=denisspitfire][quote=digaoneves]Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException[/quote]

what?? pq try e catch resolve o problema? :shock:

Magias do java kkkk[/quote]

Não é que resolve o problema, ele não compila se a exceção não for tratada, acho que o autor não colocou o try/catch no post por algum motivo, talvez ele tenha usado throws.

a questão é porque volta 109 e nao o valor correto

aqui também deu 9921

Vocês estão pegando o nome dos filmes também, note que ele começa a iteração no 1, e não no 0.

aff nem percebi passei direto no detalhe

E é um Hashtable também, se houverem atores repetidos, eles não serão incluídos mais de uma vez.

tenho um disparador de e-mail, ele esta enviando os e-mails apartir de um result set, seria melhor usar um hashtable ou dar ja um select pegando só valores nao repetidos?

Se você quiser evitar repetição de dados, e a ordem dos dados não importa pra você, eu sugiro que use coleções Hash, pois são até mais rápidas.

[quote=digaoneves]Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException[/quote]

digao, meu codigo ta assim

[code]public static void main(String[] args) {
// TODO code application logic here

        Hashtable atores = new Hashtable();  
  
    try {  
        Scanner f = new Scanner(new File("input-top-grossing.txt"));    
        while (f.hasNext())    
        {    
            String linha = f.nextLine();    
            String[] elementos = linha.split("/");    
            for (int i = 1; i < elementos.length; i++)    
            {    
                            Vector filmeAtor = new Vector();    
                            atores.put(elementos[i], filmeAtor);      
            }  
        }  
     } catch (IOException e) {  
            System.out.print("Erro na abertura do arquivo!");  
        }  
        //System.out.println(atores);   
        System.out.println(atores.size());  
        } [/code] 

porem retorna 109 como tamanho oO

[quote=Hyzek][quote=digaoneves]Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException[/quote]

digao, meu codigo ta assim

[code]public static void main(String[] args) {
// TODO code application logic here

        Hashtable atores = new Hashtable();  
  
    try {  
        Scanner f = new Scanner(new File("input-top-grossing.txt"));    
        while (f.hasNext())    
        {    
            String linha = f.nextLine();    
            String[] elementos = linha.split("/");    
            for (int i = 1; i < elementos.length; i++)    
            {    
                            Vector filmeAtor = new Vector();    
                            atores.put(elementos[i], filmeAtor);      
            }  
        }  
     } catch (IOException e) {  
            System.out.print("Erro na abertura do arquivo!");  
        }  
        //System.out.println(atores);   
        System.out.println(atores.size());  
        } [/code] 

porem retorna 109 como tamanho oO[/quote]

Só pra desencargo de consciência tente com BufferedReader.File file = new File("input-top-grossing.txt"); FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(fileReader); String linha = ""; while((linha = bufferedReader.readLine()) != null){ // seu processamento linha a linha aqui. }

[quote=digaoneves][quote=Hyzek][quote=digaoneves]Rodei o seu código com o seu arquivo, e pra mim foram adicionados 8264 atores.

Não alterei nenhuma linha de código, só adicionei o bloco try/catch para tratar a FileNotFoundException[/quote]

digao, meu codigo ta assim

[code]public static void main(String[] args) {
// TODO code application logic here

        Hashtable atores = new Hashtable();  
  
    try {  
        Scanner f = new Scanner(new File("input-top-grossing.txt"));    
        while (f.hasNext())    
        {    
            String linha = f.nextLine();    
            String[] elementos = linha.split("/");    
            for (int i = 1; i < elementos.length; i++)    
            {    
                            Vector filmeAtor = new Vector();    
                            atores.put(elementos[i], filmeAtor);      
            }  
        }  
     } catch (IOException e) {  
            System.out.print("Erro na abertura do arquivo!");  
        }  
        //System.out.println(atores);   
        System.out.println(atores.size());  
        } [/code] 

porem retorna 109 como tamanho oO[/quote]

Só pra desencargo de consciência tente com BufferedReader.File file = new File("input-top-grossing.txt"); FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(fileReader); String linha = ""; while((linha = bufferedReader.readLine()) != null){ // seu processamento linha a linha aqui. }[/quote]

Com BufferedReader deu certo! :shock:

Obrigado!!!

Muito estranho isso hehee… mas que bom que foi!

mas lembre-se que com seu código tudo funcionou normalmente pra mim.