有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

现在我有一个名为Person的对象,上面有一个名为setName的方法

我在我的主班,我已经宣布

List People = new LinkedList();

我想做的只是在第一个位置调用对象的setName函数。 我发现,当与一系列人一起工作时,这很容易做到。我只想说

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

但由于它在一个linkedlist中,我遇到了麻烦

我试着用“获取”的方法,就像这样

People.get(0)

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

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

提前谢谢


共 (6) 个答案

  1. # 1 楼答案

    您不需要设置存储的对象类型。所以你需要向上投射:

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

    或设置存储对象的类型:

    List<Person> people = new LinkedList<Person>();
    
  2. # 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");
    
  3. # 3 楼答案

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

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

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

    List<Person> people = new LinkedList();
    
  4. # 4 楼答案

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

    List<Person> People = new LinkedList<Person>();
    
    People.get(0).setName("steve");
    
  5. # 5 楼答案

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

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

  6. # 6 楼答案

    使用generics

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