java - 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();
}
}
}
解决方案
改变
while(iterate.hasNext())
{
iterate.next().toString();
System.out.println();
}
至
while(iterate.hasNext())
{
System.out.println(iterate.next().toString);
}
您只使用无参数System.out.println();
语句打印换行符。您从未将结果分配iterate.next().toString();
给任何东西,因此它丢失了。
推荐阅读
- python - 为什么 Heroku 说主键为空?
- c# - Blazor 如何合并 JSON 以根据输入更新 MongoDB 关系
- c - 在 C 中使用 scanf() 的空条目的默认值
- vba - 在 VBA 中执行此功能是否有更聪明的方法?
- python - 如何使用 pygame 在迷宫中随机移动物体?
- asp.net - 错误:由于服务器上的错误,无法调用“addComment”
- flutter - 带有图像选择器的 Flutter 表单构建器
- visual-studio-code - 自定义字体连字
- android - Android:如何在基类中使用视图绑定并从 kotlin 合成迁移
- java - 完成 406 NOT_ACCEPTABLE - 在 SpringBoot 中测试 WebLayer