ArrayList object 及其迭代器 object 不工作
ArrayList object and its iterator object not working
如标题所述,ArrayList 及其迭代器不起作用。不知道为什么。
ArrayList 应该期望 Employees 并且它正在获取它。那为什么迭代器没有给出正确的 objects?有什么帮助吗?
代码:
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();
的结果分配给任何东西,所以它丢失了。
如标题所述,ArrayList 及其迭代器不起作用。不知道为什么。 ArrayList 应该期望 Employees 并且它正在获取它。那为什么迭代器没有给出正确的 objects?有什么帮助吗?
代码:
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();
的结果分配给任何东西,所以它丢失了。