Objects class helps the developer accurately and easily implement the equals(), hashCode(),toString(), and compareTo() methods. it gives the developer to provide implementation of these utility method in more clean and compact way.Developer need not to worry about the clumsy implementation involving variables and nulls.
lets demonstrate it by taking out Employee Class and override these methods with the help of Objects class
lets demonstrate it by taking out Employee Class and override these methods with the help of Objects class
package com.rajkrrsingh.test.guava; import java.util.ArrayList; import java.util.List; import com.google.common.base.Objects; import com.google.common.collect.ComparisonChain; public class Employee implements Comparable<Employee>{ private String empid; private String empName; private int salary; private int age; private static List<Employee> list; static{ list = new ArrayList<Employee>(); list.add(new Employee("101", "RKS", 10000, 31)); list.add(new Employee("102", "Derek", 10500, 35)); list.add(new Employee("103", "Jack", 9000, 29)); list.add(new Employee("104", "Nick", 9600, 35)); } public static List<Employee> getEmployeeList(){ return list; } public Employee(){} public Employee(String empid,String empName,int salary,int age){ this.empid = empid; this.empName = empName; this.salary = salary; this.age = age; } public String getEmpid() { return empid; } public void setEmpid(String empid) { this.empid = empid; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int hashCode() { // TODO Auto-generated method stub return Objects.hashCode(empid,empName); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof Employee)) { return false; } Employee emp = (Employee) obj; return Objects.equal(this.empid, emp.empid) && Objects.equal(this.empName, emp.empName); } @Override public String toString() { return Objects.toStringHelper(this).add("empid", empid).add("empName", empName).toString(); } @Override public int compareTo(Employee o) { // ComparisionChain return ComparisonChain.start().compare(empid, o.empid) .compare(empName, o.empName) .compare(salary, o.salary) .compare(age, o.age) .result(); } }now test our implementation using out tester class
/** * */ package com.rajkrrsingh.test.guava; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import com.google.common.base.CharMatcher; import com.google.common.base.Function; import com.google.common.base.Functions; import com.google.common.base.Joiner; import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.Collections2; import com.google.common.collect.Iterables; /** * @author rks * @04-Jan-2015 */ public class GuavaObjectsDemo { public static void main(String[] args) { objectClass(); cleanComapreToTest(); } // see the compareTo implementation in Employee class public static void cleanComapreToTest(){ Set<Employee> set = new HashSet<Employee>(); // print true System.out.println(set.add(new Employee("101", "RKS", 10000, 31))); // print false - duplicate object System.out.println(set.add(new Employee("101", "RKS", 10000, 31))); } // Object class with the helper method to implement hashcode() equals() and toString() methods public static void objectClass(){ Employee e = new Employee("105", "Tom", 80000, 24); // toString test System.out.println(e); Employee e1 = new Employee("105", "Tomm", 80000, 24); System.out.println(e1.equals(e)); } }
No comments:
Post a Comment