如何使用JAVA在文件中编写ArrayList <arra>的项目?</arra>

时间:2014-04-15 14:27:32

标签: java arraylist fileoutputstream objectoutputstream

我读取了包含带有标签的单词列表的文本文件,并将它们作为ArrayList放入包装ArrayList(ArrayList)中。

[[1, that, that, that, DT, DT], [2, table, table, table, NN, NN]]

现在我想以相同的格式在文本文件中编写如下:

1    that    that     that    DT    DT  
2    table   table    table   NN    NN

上述每一行都是一个包含6列的ArrayList。

以下代码返回一个带有Ԁ里面的文件。

public void setPPOSOfWordInDevelopmentList(ArrayList<ArrayList> trainingList){
try{
    FileOutputStream streamFile = new FileOutputStream("developmentFile.txt");
    ObjectOutputStream streamFileWriter = new ObjectOutputStream(streamFile);
for(ArrayList word: developmentWordsList){
    String inputWord = (String)word.get(1);
    extractTag(inputWord,trainingList);
    String extractedPPOSofWord =(String)findMaxTag().get(1);
    word.set(5, extractedPPOSofWord);

}
streamFileWriter.close();
System.out.println(developmentWordsList);
}
catch(Exception e){
    System.out.println("Something went wrong, check the code");
}
}

此代码与其他代码相结合,因此更改函数返回的对象格式并不容易。

3 个答案:

答案 0 :(得分:1)

你想要的东西听起来像标准的CSV文件。这个stackoverflow thread将让您直接了解如何解析这类内容。我强烈建议您重写CSV文件而不是使用ObjectInput / OutputStreams。它更易于维护,您可以在调试时使用Excel和OpenOffice Calc等工具查看文件。

答案 1 :(得分:1)

如果您想编写一个简单的文本文件,如果您使用BufferedWriter会更好。对于您的内容,如果它太长,您可以在StringBuffer或StringBuilder中对其进行格式化。在这篇文章中,我回答了一个与您尝试制作的格式有关的问题。但是你应该根据你的格式和使用包装数组的逻辑来调整它。

Export array values to csv file java

我认为,循环或&#34;增强了&#34;语句应该用作:

for (ArrayList<String> innerArray: wrapperArray) {
    for (String word : innerArray) {
        //Adapt to your required format using a StringBuilder
    }
}
//Here at the end save the content of your StringBuilder or StringBuffer using the BufferedWriter.

希望您能了解如何实现这一目标。最好的问候:)

答案 2 :(得分:1)

如果您确定使用自定义格式文件,则可以使用格式化打印并相应地添加填充。这很简单:

for (ArrayList<String> list : trainingList) {
    writeToStream(
        String.format(
            %s, %-5s, %-5s, %-5s, 
            list.getAt(0),list.getAt(1),list.getAt(2),list.getAt(3)
        );
    }
}

如果您的字符串不超过五个字符,这应该有效。请记住,空白字符是坏的demiliters,如果你使用的是等宽字体,你将面临缩进问题。