【问题标题】:Writing an ArrayList with different variables to a .txt file将具有不同变量的 ArrayList 写入 .txt 文件
【发布时间】:2016-05-14 05:25:07
【问题描述】:

我目前正在进行一个项目,我的目标是编写一个ArrayList,将StringIntegerArrayListDate 等不同的变量保存到txt 文件中。

我该怎么做呢?我尝试使用PrintWriter 并且只使用.toString(),但这只是返回了所有ArrayLists 地址,例如ArrayList@1d34gh

如何让它打印出每个单独的实体?

这是我最近的代码(在实现此处给出的答案之后):

public void writeToFile(String fileName) throws FileNotFoundException {
    PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
    for (Tweet t : tweets) {
        if (t.getAuthor() instanceof String) { 
            pw.println("Tweet Author:   @" + t.getAuthor());
        }
        else if (t.getDate() instanceof Date) {
            pw.println("Tweet Date:   " + t.getDate()); 
        }
        else if (t.getTweetID() instanceof Long) {
            pw.println("Tweet ID:   " + String.valueOf(t.getTweetID())); 
        }
        else if (t.getTweetContent() instanceof String) {
            pw.println("Tweet Content:   " + t.getTweetContent()); 
        }
        else if (t.getLikes() instanceof int) {
            pw.println("No. of Likes:   " + t.getLikes()); 
        }
        else if (t.getRetweets() instanceof int) {
            pw.println("No. of Retweets:   " + t.getRetweets()); 
        }
        else if (t.getOriginalUser() instanceof String) {
            pw.println("Username of Original Username:   " + t.getOriginalUser()); 
        }
        else if (t.getRetweeters() instanceof ArrayList<String>) {
            for(String str : t.getRetweeters()){
            pw.write("Retweeter Usernames:  " + str); 
            }
        }

    pw.close();
}

我正在尝试执行 int 变量,但它们不允许我执行 instanceOf intInteger 并且我不确定为什么当喜欢和转发是 int 时。

当我使用int 执行此操作时,它返回错误:Syntax error, insert "Dimensions" to complete ArrayType

当我使用 Integer 执行 instanceOf 时,它返回错误:Incompatible conditional operand types int and Integer.

我该如何解决这个问题?

【问题讨论】:

  • 可以添加一些代码吗?
  • 您可能会遇到嵌套列表等问题,因此您可以将列表转换为 JSON(使用映射器库之一)并将该 JSON 写入文件。或者看看像 Apache Commons Lang 等库,它们应该提供一些很好的实用程序来打印任意对象层次结构。

标签: java text arraylist io printwriter


【解决方案1】:

可能是这样的:

public void writeToFile(String fileName) throws FileNotFoundException {
    PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
    for (T item : myArray) {
        if (item instanceof Character) { ... }
        else if (item instanceof Integer) { pw.println(Integer.toString(item)) }
        else if (item instanceof ArrayList<String>) { 
            for(String str: item) {
                pw.write(str);
            }
        }
       .
       .
       .
    }
        pw.close();
}

这需要工作,但是如果您知道您的成员的类型,您可以检查他们并编写适当的转换toString()。大多数情况下,您只需使用String.valueOf() 方法即可。

【讨论】:

  • 没问题,很高兴它有帮助
  • 我会尽快看看这个我得去做点别的。我不会忘记你的 (;
  • 我现在似乎无法解决它......如果你从getLikes()返回Integer而不是int虽然它会很容易解决......你能做到吗那个?
  • 哈哈哈,我应该从一开始就告诉你的... Lolz my bad
  • 非常感谢,非常感谢您的帮助!梦想成真!现在只需要用自己的方法获取它
【解决方案2】:

您需要循环迭代您的列表并将每个值放入您的文件中。但在为文件赋值之前 make String.valueOf(value)

它看起来像这样:

for (Object obj: list) {
     string = String.valueOf(obj);
   //put variable string in txt
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2011-11-19
    • 2021-01-04
    相关资源
    最近更新 更多