通过值将对象添加到LinkedList的正确方法

时间:2012-04-23 00:32:44

标签: java linked-list

我正在尝试向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"
    }
}

第二种方式效果很好,但有更好(或更正确)的方法吗?如果第二种方式只使用这些对象的地址,那么它是否会带来风险(因为这个地址可能会在以后更换)?

1 个答案:

答案 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可能会为你优化这一点。

无论如何 - 正如你所见,第二种方式是要走的路。