Searching custom objects in arraylist :- Typical developer quickly codes foreach to check whether the object is matching. Instead of that if your search is always based on constant factor like name or phone number you can override the hashcode and equals method as given below.
public class MainThread {
private static Object ob1 = new Object();
public static void main(String[] args) {
Employee e1 = new Employee("krishna1", 1);
Employee e2 = new Employee("krishna2", 12);
Employee e3 = new Employee("krishna3", 13);
Employee e4 = new Employee("krishna4", 14);
Employee e5 = new Employee("krishna5", 15);
Employee e6 = new Employee("krishna6", 16);
Employee e7 = new Employee("krishna7", 17);
Employee e8 = new Employee("krishna8", 18);
Employee e9 = new Employee("krishna9", 19);
Employee e10 = new Employee("krishna10", 20);
Employee e11 = new Employee("krishna11", 21);
Employee e12 = new Employee("krishna12", 22);
ArrayList<Employee> arrayLis = new ArrayList<Employee>();
arrayLis.add(e1);
arrayLis.add(e2);
arrayLis.add(e3);
arrayLis.add(e4);
arrayLis.add(e5);
arrayLis.add(e6);
arrayLis.add(e7);
arrayLis.add(e8);
arrayLis.add(e9);
arrayLis.add(e10);
arrayLis.add(e11);
arrayLis.add(e12);
System.out.println(arrayLis.contains(new Employee("krishna2", 12)));
}
}
class Employee {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(int phoneNumber) {
this.phoneNumber = phoneNumber;
}
int phoneNumber;
Employee(String name, int phoneNumber) {
this.name = name;
this.phoneNumber = phoneNumber;
}
//Logic to determine when will the objects will be same
@Override
public boolean equals(Object obj) {
if (obj instanceof Employee) {
Employee employee = (Employee) obj;
if (this.name.equals(employee.getName())) {
return true;
} else {
return false;
}
} else {
return false;
}
}
//Logic to determine when will the objects will be same
@Override
public int hashCode(){
return this.name.hashCode();
}
}
public class MainThread {
private static Object ob1 = new Object();
public static void main(String[] args) {
Employee e1 = new Employee("krishna1", 1);
Employee e2 = new Employee("krishna2", 12);
Employee e3 = new Employee("krishna3", 13);
Employee e4 = new Employee("krishna4", 14);
Employee e5 = new Employee("krishna5", 15);
Employee e6 = new Employee("krishna6", 16);
Employee e7 = new Employee("krishna7", 17);
Employee e8 = new Employee("krishna8", 18);
Employee e9 = new Employee("krishna9", 19);
Employee e10 = new Employee("krishna10", 20);
Employee e11 = new Employee("krishna11", 21);
Employee e12 = new Employee("krishna12", 22);
ArrayList<Employee> arrayLis = new ArrayList<Employee>();
arrayLis.add(e1);
arrayLis.add(e2);
arrayLis.add(e3);
arrayLis.add(e4);
arrayLis.add(e5);
arrayLis.add(e6);
arrayLis.add(e7);
arrayLis.add(e8);
arrayLis.add(e9);
arrayLis.add(e10);
arrayLis.add(e11);
arrayLis.add(e12);
System.out.println(arrayLis.contains(new Employee("krishna2", 12)));
}
}
class Employee {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(int phoneNumber) {
this.phoneNumber = phoneNumber;
}
int phoneNumber;
Employee(String name, int phoneNumber) {
this.name = name;
this.phoneNumber = phoneNumber;
}
//Logic to determine when will the objects will be same
@Override
public boolean equals(Object obj) {
if (obj instanceof Employee) {
Employee employee = (Employee) obj;
if (this.name.equals(employee.getName())) {
return true;
} else {
return false;
}
} else {
return false;
}
}
//Logic to determine when will the objects will be same
@Override
public int hashCode(){
return this.name.hashCode();
}
}
No comments:
Post a Comment