加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Collection对象无法显示在java,Arraylist,Collection中显示某些

发布时间:2020-12-15 04:24:08 所属栏目:Java 来源:网络整理
导读:当我尝试打印集合对象时,它会打印Employee @ 122392Iie92.为什么打印这个而不是员工列表的详细信息? 我的代码: public class Employee { private String name; private String designation; private int employeeId; private int salary; public String ge
当我尝试打印集合对象时,它会打印Employee @ 122392Iie92.为什么打印这个而不是员工列表的详细信息?

我的代码:

public class Employee {

    private String name;
    private String designation;
    private int employeeId;
    private int salary;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDesignation() {
        return designation;
    }
    public void setDesignation(String designation) {
        this.designation = designation;
    }
    public int getEmployeeId() {
        return employeeId;
    }
    public void setEmployeeId(int employeeId) {
        this.employeeId = employeeId;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }

}

import java.util.ArrayList;

import java.util.Scanner;


public class EmployeeManagement {
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        ArrayList <Employee> lst = new ArrayList <Employee> ();

        System.out.println("Enter the number of employees : ");

        int num = sc.nextInt();

        EmployeeManagement emp = new EmployeeManagement();

        emp.addEmployeeName( num,lst);


    }

    public void addEmployeeName(int num,ArrayList<Employee> lst) {

        Employee em = new Employee();

        for(int i =0; i<num ; i++)
        {
            System.out.println("Enter the employee id : ");
            em.setEmployeeId(sc.nextInt());

            System.out.println("Enter the name of employee : ");
            em.setName(sc.next());

            System.out.println("Enter the designation of employee : ");
            em.setDesignation(sc.next());

            System.out.println("Enter the Salary of employees : ");
            em.setSalary(sc.nextInt());

            lst.add(em);        
        }

        System.out.println(lst);
    }

}

解决方法

它使用Object类的默认toString方法进行打印.如果要显示值,则需要在Employee类中覆盖toString.它目前显示的是类名和哈希码.

在Employee中写一个这样的toString方法:

@Override
 public String toString(){
       SubString sb = new SubString();
       sb.append("Name :- ")append(name).append(id);  //all relevant fields
       return sb.toString();
 }

在循环内移动新语句,否则您将一次又一次地添加和更新同一对象.

public void addEmployeeName(int num,ArrayList<Employee> lst) {



    for(int i =0; i<num ; i++)
    {
         Employee em = new Employee();
        System.out.println("Enter the employee id : ");
        em.setEmployeeId(sc.nextInt());

        System.out.println("Enter the name of employee : ");
        em.setName(sc.next());

        System.out.println("Enter the designation of employee : ");
        em.setDesignation(sc.next());

        System.out.println("Enter the Salary of employees : ");
        em.setSalary(sc.nextInt());

        lst.add(em);        
    }

    System.out.println(lst);
}

  }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读