equals method usage in string and list

Si Yo :

on the oracle java documentation, equals() from list says two lists are defined to be equal if they contain the same elements. But from object class equals() return true only if their hash code is equal. It means equals() from list overrides equals method from object class. And it's same for equals() from string. As long as they have same characters, they return true.

so whenever I declare a type as String, or use list classes like arraylist equals() are overriden automatically righT?

Deadpool :

equals() are overridden automatically righT?

Answer : Yes absolutely right, If you are asking overriden .equals() method is invoked automatically at run time

**Object class is parent class for every class in java and it consist of .equals() method which compares the object references

But String class, Wrapper classes (Integer,Long etc..) and Collections Classes (ArrayList, hashSet etc..) are overridden .equals() method to compare content in object instead of object references

to avoid confusions here is the clear example

public class Main2 {
public static void main(String[] args) {
    List<String> l1 = new ArrayList<>();
    l1.add(new String("hello"));
    List<String> l2 = new ArrayList<>();
    l2.add(new String("hello"));

    System.out.println(l1.equals(l2)); //true

    List<Test> t1 = new ArrayList<>();
    t1.add(new Test());
    List<Test> t2 = new ArrayList<>();
    t2.add(new Test());

    System.out.println(t1.equals(t2)); //false
    }
}

 class Test{
  }

In the above example comparing List<String> will return true because .euqals() method in String is overridden to compare content

But while comparing Lits<Test> will return false even though both objects are empty, since .equals() method in Test class is not overridden by default it will invoke Object class .equals() method which compares reference of objects as == does

Google Question object class equals method compares hashcode ?

Answer

The java.lang.Object class requires that any two objects that compare equal using the equals() method must produce the same integer result when the hashCode() method is invoked on the objects [API 2014]. The equals() method is used to determine logical equivalence between object instances.Feb 12, 2018

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=88216&siteId=1