首页 > 解决方案 > 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 方法不起作用?有人可以详细解释一下这个问题吗?任何好的解释都受到高度赞赏。输出: 输出

标签: javacollections

解决方案


改变

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

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

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


推荐阅读