微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ArrayList 对象及其迭代器对象不起作用

如何解决ArrayList 对象及其迭代器对象不起作用

正如标题所提到的,ArrayList 及其迭代器不起作用。无法弄清楚为什么。 ArrayList 应该期待员工,它正在得到它。那么为什么迭代器没有给出正确的对象?有什么帮助吗?

代码

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

class Employee implements Serializable
{
    private int empid;
    private String name,desig;
    private double salary;
    
    private static final long serialVersionUID=1;
    
    Employee(int empid,String name,String desig,double salary)
    {
        this.empid=empid;
        this.name=name;
        this.desig=desig;
        this.salary=salary;
    }
    
    Employee()
    {}

    @Override
    public String toString()
    {
        return "Employee [empid=" + empid + ",name=" + name + ",desig=" + desig + ",salary=" + salary + "]";
    }
    
}
    
    /**
     * This class is used for checking the serializability of the objects.
     */
public class CollectionsAndSerializabilityPractice
{
    public static void main(String[] args)
    {
        List<Employee> listofEmployees= new ArrayList<Employee>();
        
        for(int i=1; i<=4; i++)
        {
            listofEmployees.add(new Employee(i,"Employee"+i,"Manager",25000+i));
        }
        
        System.out.println("Before serialisation:");
        
        Iterator<Employee> iterate=listofEmployees.iterator();
        while(iterate.hasNext())
        {
            iterate.next().toString();
            System.out.println();
        }
        
        try(FileOutputStream FOS= new FileOutputStream("Output.txt");)
        {
            ObjectOutputStream OOS=new ObjectOutputStream(FOS);
            
            OOS.writeObject(listofEmployees);
        }
        catch (Exception e1)
        {
            e1.printstacktrace();
        }
        
        try(FileInputStream FIS= new FileInputStream("Output.txt");)
        {
            ObjectInputStream OIS=new ObjectInputStream(FIS);
            
         listofEmployees=(List<Employee>)OIS.readobject();
         iterate=listofEmployees.iterator();
            
            System.out.println("After deserialisation:");

            while(iterate.hasNext())
            {
                iterate.next().toString();
                System.out.println();
            }
        }
        catch (Exception e1)
        {
            e1.printstacktrace();
        }
        
        
    }

}

我不明白为什么 toString 方法不起作用?有人可以向我详细解释一下这个问题吗?任何好的解释都受到高度赞赏。 输出

output

解决方法

改变

        while(iterate.hasNext())
        {
            iterate.next().toString();
            System.out.println();
        }

        while(iterate.hasNext())
        {
            System.out.println(iterate.next().toString);
        }

您只用无参数 System.out.println(); 语句打印了换行符。您从未将 iterate.next().toString(); 的结果分配给任何东西,因此它丢失了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。