今天在用ArrayList类的contains方法是遇到了问题,我写了一个存放User类的ArrayList 但在调用list.contains(对象)时总是返回false。 去看了下ArrayList的源码,源码如下:
- public boolean contains(Object o) {
- return indexOf(o) >= 0;
- }
- public int indexOf(Object o) {
- if (o == null) {
- for (int i = 0; i < size; i++)
- if (elementData[i]==null)
- return i;
- } else {
- for (int i = 0; i < size; i++)
- if (o.equals(elementData[i]))
- return i;
- }
- return -1;
- }
所以要使用对比一些对象的时候要对该对象的equals方法重写,且list的constains方法的效率不高,建议使用hashset的constains方法