2016-02-04 4 views
2

Я в настоящее время проходит проект, в котором я намерен написать ArrayList, который содержит различные переменные, такие как String, Integer, ArrayList, Date и т.д. до txt файла.Пишем ArrayList с различными переменными в текстовый файл

Как бы я это сделал? Я пробовал использовать PrintWriter и просто делал .toString(), но это только что вернуло все адреса ArrayList, например [email protected].

Как я могу распечатать каждый отдельный объект?

Это мой последний код (после реализации ответ, данный здесь):

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 переменные, но они не позволяют мне делать instanceOfint или Integer и я unsure почему, когда нравится & ретвиты от int.

Когда я делаю это с int, он возвращает ошибку: Syntax error, insert "Dimensions" to complete ArrayType

Когда я InstanceOf с Integer, он возвращает ошибку: Incompatible conditional operand types int and Integer.

Как я могу решить эту проблему?

+1

Не могли бы вы добавить код? – FeanDoe

+0

Вероятно, вы столкнулись с проблемами с вложенными списками и т. Д., Поэтому, возможно, вы можете преобразовать список в JSON (используйте одну из библиотек карт) и записать этот JSON в файл. Кроме того, вы можете посмотреть на такие библиотеки, как Apache Commons Lang и т. Д., Которые должны предоставить некоторые полезные утилиты для печати произвольных иерархий объектов. – Thomas

ответ

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().

+1

спасибо, это очень полезно! –

+0

Без проблем рад, что это помогло – Idos

+0

Что делать, если я хочу напечатать переменную int, ее предложение Integer не будет работать, а затем, если я использую int, это тоже не сработает? –

0

вам нужно перебирать список в цикле и помещать каждое значение в свой файл. Но прежде чем положить значение в файл сделать String.valueOf(value)

было бы, кажется, чего-л, как это:

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