【问题标题】:Writing and reading to/from a file (using ArrayList) in java在java中写入和读取文件(使用ArrayList)
【发布时间】:2012-10-16 02:04:47
【问题描述】:

所以基本上,我有这几个超类,它们的几个子类中的一个组成了一个小程序。至于文件处理,由于我使用的是“数组”,所以我使用了 writeobject 和 readobject 方法。但是现在,我已经把我所有的数组都改成了“ArrayLists”,但是当涉及到文件处理时,它显然不像以前那样工作了。

我有 2 个特定部分出错,首先是:

for(i=0;i<100;i++)
{
customerOOS.writeObject(Customer[i]);//since we no longer have (Customer[]) array, and instead Custarray of arraylist
}

。 . .

第二部分:

for (i=0;i<100;i++)
{
Customer[i] = (Customer)customerOIS.readObject();//same problem again
}

那么,我应该用什么替换这些部件,这样它才能工作。还是应该使用完全不同的方式来处理 ArrayLists 的文件?

【问题讨论】:

    标签: java list file-io arraylist


    【解决方案1】:

    ArrayListList(由动态数组支持)的实现,它是 Objects 的容器。

    此容器具有非常具体且记录良好的方法,可让您管理元素列表。

    为了从列表中检索一个元素,您需要使用List#get(int)

    for(i=0;i<Customer.size();i++)
    {
        customerOOS.writeObject(Customer.get(i));
    }
    for (i = Customer.size(); i < 100; i++) {
        customerOOS.writeObject(null);
    }
    

    要添加新元素,需要使用List#add(Object)

    for (i=0;i<100;i++)
    {
        Customer.add((Customer)customerOIS.readObject());
    }
    

    我会花一些时间研究 API 文档并通读 Collections 线索,因为这些是非常基本的概念

    【讨论】:

    • 谢谢!再说一次我的问题,对于第二个循环(添加一个元素),我们在哪里使用在循环中声明的“i”?
    • 你不需要。 ArrayList 是一个动态数组,这意味着它可以自行(动态地)增长和收缩。花一些时间阅读API DocumentationCollections 线索,尤其是The List Interface
    • 我认为 get(i) 部分有问题,我在执行它时收到此错误。 java.lang.IndexOutOfBoundsException:索引:0,大小:0 在 java.util.ArrayList.RangeCheck(ArrayList.java:547) 在 java.util.ArrayList.get(ArrayList.java:322) 在 FileHandling.main(FileHandling. java:39)
    • @SBOY 问题是,列表中没有任何内容。我还更新了代码以防止可能的溢出,并相应地将预期数量的输入对象括起来
    • 现在,编译错误:'(找不到符号方法get(int)
    猜你喜欢
    • 2015-07-15
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 2013-03-25
    • 1970-01-01
    • 2015-03-14
    • 2017-04-25
    相关资源
    最近更新 更多