Core Java Assignment 5
1) I have two classes Employee and Department as shown below.
class Employee { int id; String name; Department dept; double salary; //setter/getter methods //override equals method //override toString //override hasCode } class Department { int deptId; String deptName; String location; //setter/getter methods //override equals method //override equals method //override toString }
–> for me, two employee objects are same when empId, empName and his Department are same. So, write a program to accept number of employee and employee details through console and filter the duplicate employees and display the result.
Solution
package com.bellinfo.batch3.corejava.day8; import java.util.Scanner; public class EmployeeDemoExample1 { Scanner scan; public static void main(String[] args) { EmployeeDemoExample1 ede =new EmployeeDemoExample1(); StudentDetails[] uniqueSDArray = ede.recieveInputsFromConsole(); ede.displayResults(uniqueSDArray); } /** * method to receive inputs from console * @return */ StudentDetails[] recieveInputsFromConsole(){ scan = new Scanner(System.in); System.out.println("enter student count:"); int studentCount = scan.nextInt(); StudentDetails[] originalStudArray = new StudentDetails[studentCount]; StudentDetails[] uniqueStudArray = new StudentDetails[studentCount]; System.out.println(""); for(int i=0;i<=studentCount-1;i++){ System.out.println("Student Details"+i+" :"); System.out.println("Student Id:"); int sId =scan.nextInt(); System.out.println("Student Name:"); String sName = scan.next(); System.out.println("Course Id:"); int cId = scan.nextInt(); System.out.println("Course Name:"); String cName = scan.next(); System.out.println("Course Duration:"); int cDuration = scan.nextInt(); StudentDetails sd =populateStudentDetails(sId, sName, cId, cName, cDuration); originalStudArray[i] =sd; } uniqueStudArray = eliminateDuplicateStudentRecords(originalStudArray); return uniqueStudArray; } /*** * Method used to process inputs and populate the object required. * @param sId * @param sName * @param cId * @param cName * @param cDuration * @return */ StudentDetails populateStudentDetails(int sId, String sName, int cId, String cName, int cDuration){ Course c = new Course(); c.setCourseId(cId); c.setCourseName(cName); c.setCourseDuration(cDuration); StudentDetails sd = new StudentDetails(); sd.setStudentId(sId); sd.setStudentName(sName); sd.setCourse(c); return sd; } /** * Logic to eliminate the duplicates * @param orignialStudArray * @return */ StudentDetails[] eliminateDuplicateStudentRecords(StudentDetails[] orignialStudArray){ StudentDetails[] filteredArray = new StudentDetails[orignialStudArray.length]; filteredArray = orignialStudArray.clone(); for(int i=0; i<=orignialStudArray.length-1; i++){ StudentDetails sd1 = orignialStudArray[i]; for(int j=i+1,y=0;j<=orignialStudArray.length-1;j++){ StudentDetails sd2 = orignialStudArray[j]; if(sd1.equals(sd2)){ filteredArray[j] =null; } } } return filteredArray; } /** * This method used for displaying the results after filtering the results. * @param array */ void displayResults(StudentDetails[] array){ System.out.println("****************************************"); System.out.println("********Unique Student Records**********"); System.out.println("****************************************"); System.out.println("Id"+" "+"Name"+" "+"CId"+" "+"CName"+" "+"CDuration"); for(int i=0;i<=array.length-1;i++){ if(array[i]!=null){ StudentDetails sd = array[i]; System.out.println(sd.toString()); } } } } class StudentDetails { private int studentId; private String studentName; private Course course; public int getStudentId() { return studentId; } public void setStudentId(int studentId) { this.studentId = studentId; } public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public Course getCourse() { return course; } public void setCourse(Course course) { this.course = course; } public boolean equals(Object otherStudent){ if(otherStudent ==null){ return false; } if(otherStudent instanceof StudentDetails){ StudentDetails sdOtherObject = (StudentDetails)otherStudent; if(this.studentId ==sdOtherObject.studentId && this.studentName.equals(sdOtherObject.studentName) && this.course.equals(sdOtherObject.course)){ return true; } } return false; } public int hashCode(){ return 31*studentId*studentName.hashCode()*course.hashCode(); } public String toString(){ return studentId+" "+studentName+" "+ course; } } class Course{ private int courseId; private String courseName; private int courseDuration; public int getCourseId() { return courseId; } public void setCourseId(int courseId) { this.courseId = courseId; } public String getCourseName() { return courseName; } public void setCourseName(String courseName) { this.courseName = courseName; } public int getCourseDuration() { return courseDuration; } public void setCourseDuration(int courseDuration) { this.courseDuration = courseDuration; } public boolean equals(Object otherCourse){ if(otherCourse ==null){ return false; } if(otherCourse instanceof Course){ Course otherObj = (Course) otherCourse; if(this.courseId==otherObj.courseId && this.courseName.equals(otherObj.courseName) && this.courseDuration==this.getCourseDuration()){ return true; } } return false; } public int hashCode(){ return 31*courseId*courseDuration*courseName.hashCode(); } public String toString(){ return courseId+" "+courseName+" "+courseDuration; } }
ouput / console:
**************************************** ********Unique Student Records********** **************************************** Id Name CId CName CDuration 1 Siva 121 Java 3 2 Teju 121 .net 3