在链表中获取对象与在java中获取数组



这可能是一个初学者的问题,但是。

现在我有一个名为Person的对象它的方法名为setName

我在我的主类中,我已经声明了

List People = new LinkedList();

我想做的就是简单地调用第一个位置对象的setName函数。我发现这在处理一组人员时非常容易做到。我所要做的就是写

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

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

我尝试使用"get"方法,像这样…

People.get(0)

但是它不允许我使用我的用户定义的方法所以我不能设置名字

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

thanks in advance

您想使用泛型使其成为一个人员列表:

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

使用泛型:

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

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

不能设置存储的对象类型。所以你需要upcast:

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

或设置存储对象的类型:

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

LinkedList只有在您想要快速遍历列表,并且想要快速到达第一个或最后一个元素时才有用。此外,您需要正确地将people定义为LinkedList以访问链表方法,并且您应该键入您的列表,如下:

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

然而,ArrayList是一个更好的通用选择,它在通过索引访问元素时提供了良好的性能,因此:

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

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

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

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

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

List<Person> people = new LinkedList();

您需要将链表定义为Person:

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

虽然您必须对people列表中的每个'Person'这样做,但这违背了LinkedList的意义。

相关内容

  • 没有找到相关文章

最新更新