将文本文件的内容添加到哈希集

时间:2018-06-18 10:51:51

标签: java hashset

我正在尝试通过读入文本文件来使用HashSet创建字典。这是有效的,但每次我读入一个新的文本文件时,都会覆盖前一个文本文件中的HashSet的内容。我想要的是在变量文本文件中追加新的字符串实例到HashSet,以创建所述字典。

任何帮助都将不胜感激。

    try {
    Scanner textFile = new Scanner(new File("Test2.txt"));

    Set<String> dictionary = new HashSet<String>();

    while (textFile.hasNext()) {
        dictionary.add(textFile.next().trim());
    }

    textFile.close();

    for (String str : dictionary) {
        System.out.print(str + " ");
    }

    } catch(FileNotFoundException e){
        e.printStackTrace();
    } 

2 个答案:

答案 0 :(得分:1)

这是因为您正在重新创建hashset:

Set<String> dictionary = new HashSet<String>();

每次阅读新文件。

如果要保留更改,可以在更高的范围内声明该设置,或者使其成为创建对象时创建的对象中的属性,并且只是随后读取文件。

以下是示例代码:

public class DictClass {

    private  Set<String> dictionary = new HashSet<String>();

    //... cunstructors, getters, setters

    void readFile(String fileName) {
        try {
            Scanner textFile = new Scanner(new File(fileName));

            while (textFile.hasNext()) {
                // now dictionary is not recreated each time
                dictionary.add(textFile.next().trim());
            }

            textFile.close();

            for (String str : dictionary) {
                System.out.print(str + " ");
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

答案 1 :(得分:0)

上课

public class TextFileReader {

        private Set<String> dictionary;

        public TextFileReader(Set<String> dictionary) {
            this.dictionary = dictionary;
        }

        public void printDict(Set<String> dictionary) {
            for (String dictionary1 : dictionary) {
                System.out.println(dictionary1);
            }
        }

        public void fileScanner(String textFileName) {
            try {
                Scanner textFile = new Scanner(new File(textFileName));

                while (textFile.hasNext()) {
                    dictionary.add(textFile.next().trim());
                }

                textFile.close();

                for (String str : dictionary) {
                    System.out.print(str + " ");
                }

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }

    }

测试

public class Test {

    static void main(String[] args){

        Set<String> dict = new HashSet<String>();

        TextFileReader reader = new TextFileReader(dict);

        List<String> textFileList = Arrays.asList("textFile1", "textFile2");

        for (String textFileList1 : textFileList) {
            reader.fileScanner(textFileList1);
        }

        reader.printDict(dict);

    }

}

运行

$ javac Test.java 
$ java Test