首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Vector 移除元素原理:引用相等即可移除,無需 equals 重寫

     編輯:程式設計綜合問答

代碼現場

Vector v1 = new Vector();
A a = new A(); a.i=12; a.color=23;
v1.add(a);
A b = v1.get(0);
v1.remove(b); // 成功移除

核心原因

Vector.remove(Object o) 內部調用 indexOf(o),而 indexOf 使用 == 比較引用地址(源碼中為 elementData[i] == o)。只要 b 與列表中元素指向同一對象,即可移除,不依賴 equals()。

對比:ArrayList/LinkedList

  • ArrayList.remove(Object) 使用 equals() 比較,若未重寫則同樣比較引用。
  • 集合框架中 remove 行為取決於具體實現,但主流實現均先檢查引用相等(==),再調用 equals。

最佳實踐

  • 若需按業務鍵移除,務必重寫 equals() / hashCode()。
  • 遍歷移除時使用 Iterator.remove() 避免 ConcurrentModificationException。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved