如何解决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 方法不起作用?有人可以向我详细解释一下这个问题吗?任何好的解释都受到高度赞赏。 输出:
解决方法
改变
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 举报,一经查实,本站将立刻删除。