【问题标题】:Copying ArrayList to text file using methods使用方法将 ArrayList 复制到文本文件
【发布时间】:2014-04-21 19:38:30
【问题描述】:

我想使用以下方法从数组列表中删除元素:

 public static String removeOldestItem(ArrayList<String> theList)

并使用此方法将删除的元素写入文本文件:

 public static void addItem(ArrayList<String> theList, String s)

到目前为止我有:

import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;

public class test {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArrayList <String> s = new ArrayList<> (4); 
        s.add("Knock knock.");
        s.add("Who's there?");
        s.add("*very long pause....*");
        s.add("Java");


         try {
                FileWriter fos = new FileWriter("list_contents.txt");
                PrintWriter out = new PrintWriter(fos);

                for (int i = 0; i < s.size(); i++) {

                    out.write(String.valueOf(s.get(i) ) );
                    out.write("\r\n");
                } 
                out.close();

            } catch (Exception e) {

            }
        }
 }

第二种方法应该将字符串“s”放入传递的列表“theList”中。第一种方法应该删除列表中最长的项目并将该项目返回给调用者。

我无法理解如何实现这些方法。 有什么想法吗?

【问题讨论】:

  • 您是在尝试为 ArrayList 类实现新方法还是其他方法?
  • 这些是我老师命名的方法,所以它们不是新方法,只是我需要编写的方法
  • 好的,所以你需要找到一种方法来判断最旧的元素是什么。关于 arraylist 的棘手之处在于它具有要在任何参考点插入的元素,而且我不知道有什么方法可以告诉它有多旧。如果我们忽略在特定点插入并假设您仅在“结束”插入,您可以创建一个迭代器来跟踪“最旧”项目并假设数组中紧随其后的项目是下一个最旧的。由于我们也在控制插入方法,这似乎是一个安全的想法
  • 说索引 0 是最旧的,我可以使用 for 循环来计算所有最多 3 个以继续将元素添加到列表中吗?如果是这样,我是否需要在这两种方法中都实现它,或者它们是否在方法之外?
  • 查看迭代器对象docs.oracle.com/javase/7/docs/api/java/util/Iterator.html 和ArrayList 类的迭代器方法docs.oracle.com/javase/7/docs/api/java/util/… 基本上,它是一个对象,可以让您在像ArrayList 这样的数据对象中保持位置。然后,您可以告诉它转到下一个对象、删除该对象等。您可以使用迭代器的位置来表示最旧的对象。然后,当您要删除对象时,将其删除并移动迭代器。尝试一下,看看什么最适合你

标签: java methods arraylist


【解决方案1】:

我不知道 ArrayList 上的 removeOldestItem 方法,但是链接列表和链接哈希映射有 removeEldestEntry。它通常被覆盖以产生具有某种智能修剪的缓存。

您的目标是通过添加一些便捷方法来扩展 ArrayList 和 OutputStream 吗?

【讨论】:

  • 本质上不是扩展,而是通过上述方法将元素写入文本文件。好吧,我猜你的建议是正确的。
猜你喜欢
  • 2020-04-01
  • 2021-11-29
  • 2010-11-25
  • 2016-10-28
  • 2012-08-12
  • 2017-02-27
  • 1970-01-01
  • 2018-04-19
  • 2015-05-05
相关资源
最近更新 更多