Printing out all the objects in array list

177,827

Solution 1

Override toString() method in Student class as below:

   @Override
   public String toString() {
        return ("StudentName:"+this.getStudentName()+
                    " Student No: "+ this.getStudentNo() +
                    " Email: "+ this.getEmail() +
                    " Year : " + this.getYear());
   }

Solution 2

Whenever you print any instance of your class, the default toString implementation of Object class is called, which returns the representation that you are getting. It contains two parts: - Type and Hashcode

So, in student.Student@82701e that you get as output ->

  • student.Student is the Type, and
  • 82701e is the HashCode

So, you need to override a toString method in your Student class to get required String representation: -

@Override
public String toString() {
    return "Student No: " + this.getStudentNo() + 
           ", Student Name: " + this.getStudentName();
}

So, when from your main class, you print your ArrayList, it will invoke the toString method for each instance, that you overrided rather than the one in Object class: -

List<Student> students = new ArrayList();

// You can directly print your ArrayList
System.out.println(students); 

// Or, iterate through it to print each instance
for(Student student: students) {
    System.out.println(student);  // Will invoke overrided `toString()` method
}

In both the above cases, the toString method overrided in Student class will be invoked and appropriate representation of each instance will be printed.

Solution 3

You have to define public String toString() method in your Student class. For example:

public String toString() {
  return "Student: " + studentName + ", " + studentNo;
}
Share:
177,827
joe
Author by

joe

Updated on July 09, 2022

Comments

  • joe
    joe almost 2 years

    I need to be able to print out the Student objects(all variables) in my array list. Is this possible? When i try to print it outputs this sort of thing e.g student.Student@82701e. I think it's hexadecimal or something

    This is my code:

    package student;
    
    public class Student {
    
        private String studentName;
        private String studentNo;
        private String email;
        private int year;
    
    
        public Student() {
            this.studentName = null;
            this.studentNo = null;
            this.email = null;
            this.year = -1;
        }
    
        public Student(String nName, String nNum, String nEmail, int nYr) {
            this.studentName = nName;
            this.studentNo = nNum;
            this.email = nEmail;
            this.year = nYr;
        }
    
        public void setStudentName(String newStudentName) {
            this.studentName = newStudentName;
        }
    
        public void setStudentNo(String newStudentNo) {
            this.studentNo = newStudentNo;
        }
    
        public void setEmail(String newEmail) {
            this.email = newEmail;
        }
    
        public void setYear(int newYear) {
            this.year = newYear;
        }
    
        public String getStudentName() {
            return studentName;
        }
    
        public String getStudentNo() {
            return studentNo;
        }
    
        public String getEmail() {
            return email;
        }
    
        public int getYear() {
            return year;
        }
    }
    
    package student;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class studentTest {
    
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
    
    
    
            List<Student> Students = new ArrayList();
    
    
            Student student1 = new Student();
    
            student1.setStudentName("Bob Marley");
            student1.setStudentNo("N0002");
            student1.setEmail("[email protected]");
            student1.setYear(2);
    
            Students.add(student1);
    
            Student student2 = new Student();
    
            student2.setStudentName("Bill Harvey");
            student2.setStudentNo("N0003");
            student2.setEmail("[email protected]");
            student2.setYear(2);
    
            Students.add(student2);
    
            Student student3 = new Student();
    
            student3.setStudentName("John Beans");
            student3.setStudentNo("N0004");
            student3.setEmail("[email protected]");
            student3.setYear(2);
    
            Students.add(student3);
    
    
            System.out.println("Add new students: ");
            System.out.println("Enter number of students to add: ");
            int countStudents = input.nextInt();
    
            for (int i = 0; i < countStudents; i++) {
                Student newStudents = new Student();
    
    
                System.out.println("Enter details for student: " + (i + 1));
    
                System.out.println("Enter name: ");
                newStudents.setStudentName(input.next());
    
                System.out.println("Enter Number: ");
                newStudents.setStudentNo(input.next());System.out.println("Search by student number: ");
    
    
    
                System.out.println("Enter email: ");
                newStudents.setEmail(input.next());
    
                System.out.println("Enter year: ");
                newStudents.setYear(input.nextInt());
                Students.add(newStudents);
            }
    
    
        }
    }