我正在尝试向LinkedList
添加许多对象。我试过的第一种(不正确的方法)如下:
人员类:
public class Person
{
public double age;
public String name;
}
(第一种方式)主要档案:
import java.util.LinkedList;
public class Main
{
public static void main(String[] args)
{
LinkedList<Person> myStudents = new LinkedList<Person>();
Person currPerson = new Person();
for(int ix = 0; ix < 10; ix++)
{
currPerson.age = ix + 20;
currPerson.name = "Bob_" + ix;
myStudents.add(currPerson);
}
String tempName_1 = myStudents.get(1).name; \\This won't be "Bob_1"
String tempName_2 = myStudents.get(2).name; \\This won't be "Bob_2"
}
}
第二种方式:
import java.util.LinkedList;
public class Main
{
public static void main(String[] args)
{
LinkedList<Person> myStudents = new LinkedList<Person>();
for(int ix = 0; ix < 10; ix++)
{
Person currPerson = new Person();
currPerson.age = ix + 20;
currPerson.name = "Bob_" + ix;
myStudents.add(currPerson);
}
String tempName_1 = myStudents.get(1).name; \\This will be "Bob_1"
String tempName_2 = myStudents.get(2).name; \\This will be "Bob_2"
}
}
第二种方式效果很好,但有更好(或更正确)的方法吗?如果第二种方式只使用这些对象的地址,那么它是否会带来风险(因为这个地址可能会在以后更换)?
答案 0 :(得分:-1)
第二种方式是正确的,尽管可以说你可以做到:
import java.util.LinkedList;
public class Main
{
public static void main(String[] args)
{
LinkedList<Person> myStudents = new LinkedList<Person>();
Person currPerson = null;
for(int ix = 0; ix < 10; ix++)
{
currPerson = new Person();
currPerson.age = ix + 20;
currPerson.name = "Bob_" + ix;
myStudents.add(currPerson);
}
String tempName_1 = myStudents.get(1).name; \\This will be "Bob_1"
String tempName_2 = myStudents.get(2).name; \\This will be "Bob_2"
}
}
并在循环之外声明currPerson。这应该“节省”一点空间,但这是一个无限小的优化。无论如何,JVM可能会为你优化这一点。
无论如何 - 正如你所见,第二种方式是要走的路。