1

に多くのオブジェクトを追加しようとしてい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"
    }
}

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"
    }
}

2 番目の方法は問題なく機能しますが、それを行うためのより良い (またはより正しい) 方法はありますか? 2 番目の方法でこれらのオブジェクトのアドレスのみを使用する場合、リスクが高くなりますか (このアドレスは後で置き換えられる可能性があるため)。

4

1 に答える 1

-1

2番目の方法は正しいですが、次のことができると主張する人もいます:

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はおそらくその少しを最適化します。

いずれにせよ - 見てきたように、2 番目の方法が進むべき道です。

于 2012-04-23T00:53:27.617 に答える