【问题标题】:Java object methods from ArrayListArrayList 中的 Java 对象方法
【发布时间】:2017-08-17 10:26:21
【问题描述】:

我已经搜索了一些答案,但找不到我正在寻找的答案。假设我有一个 ArrayList“学校”,并且在那个 ArrayList 里面我有几个“学生”对象。如何访问每个单独的 ArrayList 条目以调用每个学生对象的方法?

例如,我试过:

System.out.println(school[0].getStudentName());

但它似乎不起作用。

在学校的ArrayList里面是我通过这个创建的几个学生对象。

public void addStudent(String name, int age) {
   Student student = new Student(name, age);
   school.add(student);
}

【问题讨论】:

  • 通过使用List函数Object get(int index)docs.oracle.com/javase/7/docs/api/java/util/…
  • 使用school.get(int i),其中i 是您的student 对象所在的索引。
  • 您将 ArrayList 与 Array 混为一谈。获取数组元素使用arrayname[index]。获取数组列表的元素使用arraylistname.get(index)
  • 是的,以前的 cmets 都是真的。我只是想补充一点:你写了“我已经搜索了一些答案,但找不到我正在寻找的答案”,而答案在(官方)Java 文档中......所以......阅读文档之前问。

标签: java string arraylist methods indexing


【解决方案1】:

使用Java5增强的for循环:

for (Student student : school) {
    System.out.println(student.getStudentName());
}

使用迭代器:

Iterator<Student> studentIterator = school.iterator();
while (studentIterator.hasNext()) {
    System.out.println(studentIterator.next().getStudentName());
}

使用索引元素访问(在 ArrayList 上很好,但不一定在其他 List 实现上):

for (int i = 0; i < school.size(); i++) {
    System.out.println(school.get(i).getStudentName());
}

如果你有一个数组,而不是 ArrayList,那么使用数组索引访问:

for (int i = 0; i < school.length; i++) {
    System.out.println(school[i].getStudentName());
}

或者把它包装成一个列表并像上面那样迭代:

for (Student student : Arrays.asList(school)) {
    System.out.println(student.getStudentName());
}

【讨论】:

    【解决方案2】:

    ArrayLists 没有数组检索元素的括号方式。 ArrayLists 是具有方法的 Java 类(因此也是对象)。以与访问其他对象相同的方式访问这些方法。

    试试:

    System.out.println(school.get(0).getStudentName());
    

    如果您想要所有学生的姓名,请尝试此处在其他答案中表达的 for 循环。

    【讨论】:

      【解决方案3】:

      你应该使用这样的东西

      List<Student> studentList = new ArrayList<Student>();
      public void addStudent(String name, int age) {
         Student student = new Student(name, age);
         studentList .add(student);
      }
      for(Student stu:studentList ){
        System.out.println("Name"+stu.name+" age"+stu.Age);
      }
      

      【讨论】:

        【解决方案4】:

        您无法使用 [] 访问 ArrayList 中的条目。您必须使用get(int index) 方法。所以,你应该这样做。

        System.out.println(school.get(0).getStudentName());
        

        【讨论】:

          猜你喜欢
          • 2013-06-08
          • 1970-01-01
          • 2013-08-28
          • 2015-11-15
          • 1970-01-01
          • 2013-10-31
          • 1970-01-01
          • 2018-08-07
          • 1970-01-01
          相关资源
          最近更新 更多