Which function should I override when using the indexOf() function in java. I have a array list, then I take in an input as the ID and create a object which contains the ID and all the other elements are null, then I need to pass that object and get the index of the element which contains that object
            Asked
            
        
        
            Active
            
        
            Viewed 4,497 times
        
    0
            
            
        - 
                    3Why do you think you need to override a function at all? – bmargulies Dec 25 '12 at 14:12
- 
                    because I need to get the index by passing an object which only contains a single element, which is the ID while all the other elements of the object is null – user1912520 Dec 25 '12 at 14:14
- 
                    yes I need to search an object from the arraylist – user1912520 Dec 25 '12 at 14:15
- 
                    There is something I don't understand: can you have several elements of your array with the same id? If yes, can't you use a `Map` instead with your identifiers as keys? – fge Dec 25 '12 at 14:22
1 Answers
5
            
            
        The equals() method
public boolean equals(Object o) {
  if (o instanceof MyObject) {
    //id comparison
    MyObject mo = (MyObject)o;
    return mo.id.equals(id);
  }
  return false;
}
Change MyObject to your class.
Remember to change hashCode() as well as @Hovercraft points out. equals and hashCode go together (read the javadoc for them). Else you might run into some nasty and possibly hard to find bugs.
An example:
With java 7+ you can do this:
public int hashCode() {
    return java.util.Objects.hashCode(id);
}
 
    
    
        Community
        
- 1
- 1
 
    
    
        Mattias Isegran Bergander
        
- 11,811
- 2
- 41
- 49
- 
                    
- 
                    2You should probably mention that `Objects.hashCode()` is Java 7+ ;) Yeah, this is 2012, but... – fge Dec 25 '12 at 14:21
 
    