Java 在单独的行上打印字符串集

Java 在单独的行上打印字符串集,java,newline,hashset,Java,Newline,Hashset,我已将一个txt文件读入Arraylist以对其进行格式化,然后将该列表读入哈希集以删除重复项。当我尝试写入txt文件时,它会将所有值放在一行上。如果我尝试将ArrayList写入一个txt文件,它会分隔行。欢迎任何帮助 public static void main(String[] args) { String filename = "data.txt"; String filename_out = "output.txt"; boolean dataRead; ArrayList&

我已将一个txt文件读入Arraylist以对其进行格式化,然后将该列表读入哈希集以删除重复项。当我尝试写入txt文件时,它会将所有值放在一行上。如果我尝试将ArrayList写入一个txt文件,它会分隔行。欢迎任何帮助

public static void main(String[] args)
{
 String filename = "data.txt";
 String filename_out = "output.txt";
 boolean dataRead;
 ArrayList<String> textFile = new ArrayList<String>();

try{

         Scanner datafile = new Scanner(new FileReader(filename));

        while(datafile.hasNext()) {
            //Scanner readIn = new Scanner(datafile.next());//.useDelimiter("[,;:.!? ]") ;

            textFile.add (datafile.next().replaceAll("\\p{Punct}|\\d","").toLowerCase().trim()); //reads next line, removes punctuation, sets to lowercase

    }

   // Collections.sort(textFile); // sort into alphabetical order
    datafile.close();
    dataRead = true;

}
 catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

ArrayList<String> dictionary = new ArrayList<String>();
Set<String> s = new HashSet<String>(textFile);
for (String eachString : s)
{
    dictionary.add(eachString);
}
Collections.sort(dictionary);
//System.out.println(dictionary);

try{
FileWriter fw = new FileWriter(filename_out);
Writer output = new BufferedWriter(fw);
int listSize = dictionary.size();
for (int i = 0; i < listSize; i++){
    output.write(dictionary.get(i).toString()+ "\n"); //this is where i think the problem is
}

output.close();
    } 
     catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }        

}
publicstaticvoidmain(字符串[]args)
{
字符串filename=“data.txt”;
字符串filename_out=“output.txt”;
布尔数据读取;
ArrayList textFile=新的ArrayList();
试一试{
扫描仪数据文件=新扫描仪(新文件读取器(文件名));
while(datafile.hasNext()){
//Scanner readIn=new Scanner(datafile.next());/.useDelimiter(“[,;:.!?]”);
textFile.add(datafile.next().replaceAll(“\\p{Punct}|\\d”,”).toLowerCase().trim());//读取下一行,删除标点,设置为小写
}
//Collections.sort(textFile);//按字母顺序排序
datafile.close();
dataRead=true;
}
捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
ArrayList字典=新的ArrayList();
Set s=新哈希集(textFile);
for(字符串每个字符串:s)
{
dictionary.add(每个字符串);
}
收藏。分类(字典);
//System.out.println(字典);
试一试{
FileWriter fw=新的FileWriter(filename\u out);
写入器输出=新的缓冲写入器(fw);
int listSize=dictionary.size();
for(int i=0;i
Windows使用
\r\n

所以改变

output.write(dictionary.get(i).toString()+ "\n"); 


将输出设为BufferedWriter并使用其newLine()方法

试试这个

output.write(dictionary.get(i).toString()+System.getProperty("line.separator"));

我认为这个答案应该有帮助@ArvindSridharan:当你看到一个已经回答的问题时,请将该问题标记为重复。哦,对了。我已经标记好了,谢谢!这成功了!!
BufferedWriter output = new BufferedWriter(fw);

...
output.write(dictionary.get(i).toString());
output.newLine();
...
output.write(dictionary.get(i).toString()+System.getProperty("line.separator"));