获取链接列表中的对象与java中的数组

时间:2011-10-23 22:12:43

标签: java arrays object linked-list

好的,这可能是一个非常初学的问题,但是......

现在我有一个名为Person的对象,其上有一个名为setName

的方法

我在我的主要班级,我已宣布

List People = new LinkedList();

我想要做的只是在第一个位置调用对象的setName函数。 我发现在使用一系列People时这很容易做到。我所要做的就是说

People[0].setName("steve");

但由于它在链接列表中,我遇到了麻烦。

我尝试使用“get”方法,如此......

People.get(0)

但是它不允许我使用我的用户定义的方法,因此我无法设置名称。

从链接列表中获取对象并访问其方法和实例变量的最佳方法是什么?

提前致谢

7 个答案:

答案 0 :(得分:7)

您希望使用泛型将其列为人员列表:

List<Person> People = new LinkedList<Person>();

People.get(0).setName("steve");

答案 1 :(得分:4)

使用generics

List<Person> people = new LinkedList<Person>();
// …
people.get(0).setName("steve");

答案 2 :(得分:3)

您应该使用泛型:List<Person>。然后,您就可以使用people.get(0).setName(..)

请注意,Java命名约定要求您的变量为小写。

答案 3 :(得分:2)

您没有设置存储的对象类型。所以你需要上传:

Person person = (Person)People.get(0);
person.setName("steve");

或设置存储对象的类型:

List<Person> people = new LinkedList<Person>();

答案 4 :(得分:2)

LinkedList只有当你想在列表上快速迭代时,以及当你想快速到达第一个或最后一个元素时才是好的。此外,您需要正确定义people作为LinkedList才能访问链接列表方法,您应该键入您的列表,所以:

LinkedList<Person> people = new LinkedList<Person>();
people.getFirst().setName();

但是,ArrayList是更好的一般选择,在按索引访问元素时提供了良好的性能,因此:

List<Person> people = new ArrayList<Person>();

然后

people.get(0).setName("fred");

答案 5 :(得分:0)

如果使用Java 1.4或更早版本,则需要将其强制转换为People类:

((Person)People.get(0)).setName("SomeName");

如果使用Java 1.5或更高版本,请使用泛型:

List<Person> people = new LinkedList();

答案 6 :(得分:0)

您需要将链接列表定义为Person LinkedList:

LinkedList<Person> people = new LinkedList<Person>();
people.get(0).setName("Steve");

另一个注释(不是关于这个问题,只是为了改进你的Java):你在变量名的第一个字母上使用小写,因为Java约定和任何后续单词的首字母大写;

float personsAge = 57.47;

解释(如果容易无聊则忽略):

LinkedList未设置为存储特定的变量类型。 另一种解决这个问题的方法是:

LinkedList people = new LinkedList();
Person person = (Person) people.get(0);
person.setName("steve2")

虽然您必须对人员列表中的每个“人员”执行此操作,但要取消LinkedList的要点。