Comment fonctionne une liste de tableaux de la méthode contains() évaluer des objets?

Dis-je en créer un objet et de l'ajouter à ma ArrayList. Si je puis créer un autre objet avec exactement le même constructeur, seront les contains() méthode évaluer les deux objets à la même chose? Supposons que le constructeur ne veut pas faire quelque chose de drôle avec l'entrée, et les variables stockées dans les deux objets sont identiques.

ArrayList<Thing> basket = new ArrayList<Thing>();  
Thing thing = new Thing(100);  
basket.add(thing);  
Thing another = new Thing(100);  
basket.contains(another); //true or false?

class Thing {  
    public int value;  

    public Thing (int x) {
        value = x;
    }

    equals (Thing x) {
        if (x.value == value) return true;
        return false;
    }
}

Est-ce que le class doit être mise en oeuvre pour contains() retour true?