Método Java Vector equals()
equals()El método es en JavaVectorun método importante proporcionado por la clase, utilizado para comparar dosVectorobjetos son iguales. Este método hereda deAbstractListla clase, e implementaListen la interfazequals()la definición del método.
Formato de sintaxis
public boolean equals(Object o)
Parámetros del método
o: con el actualVectorobjeto a comparar- Tipo:
Object - Puede ser cualquier objeto Java, pero solo si es
Listde tipo, se realizará la comparación de contenido.
- Tipo:
Valor de retorno
- Devuelve
booleanTipo:true: si el objeto especificado también es unList, y ambas listas tienen el mismo tamaño, y todos los pares de elementos correspondientes son igualesfalse: en todos los demás casos
Características del método
1. Comparación de contenido en lugar de comparación de referencias
equals()El método comparaVectorel contenido en lugar de la dirección de referencia. Incluso si dosVectorson instancias de objetos diferentes, siempre que contengan los mismos elementos y en el mismo orden,equals()devolverátrue。
Ejemplo
Vector<String> v2 = new Vector<>(Arrays.asList("A", "B", "C"));
System.out.println(v1.equals(v2)); // imprime true
2. Compatible con la interfaz List
Dado queVectorimplementaListla interfaz,equals()el método puede compararse con cualquierListimplementación, incluyendoArrayList、LinkedListetc.
Ejemplo
ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(1, 2, 3));
System.out.println(vector.equals(arrayList)); // imprime true
3. Sensible al orden de los elementos
equals()El método es sensible al orden de los elementos; incluso si contienen los mismos elementos pero en diferente orden, devolveráfalse。
Ejemplo
Vector<String> v2 = new Vector<>(Arrays.asList("C", "B", "A"));
System.out.println(v1.equals(v2)); // imprime false
Principio de implementación
Vectordeequals()El método en realidad hereda deAbstractList, su lógica de implementación central es la siguiente:
- Primero comprueba si el objeto comparado es la misma instancia (igualdad de referencias)
- Comprueba si el objeto es
Listtipo - Compara si el tamaño de las dos listas es el mismo
- Compara uno a uno si los elementos en las posiciones correspondientes son iguales (usando el método
equals()de los elementos)
Notas
1. El método equals() de los objetos de los elementos
Vectordeequals()El método depende del métodoequals()de los elementos. Si se almacenan objetos personalizados, hay que asegurarse de que el métodoequals()se haya sobrescrito correctamente.
2. Manejo de valores null
VectorPuede contenernullelementos,equals()el método puede manejar correctamentenullla comparación de valores.
Ejemplo
Vector<String> v2 = new Vector<>(Arrays.asList(null, "B"));
System.out.println(v1.equals(v2)); // imprime true
3. Consideraciones de rendimiento
Para grandesVector,equals()el método necesita realizar una comparación en tiempo lineal (complejidad temporal O(n)), debe tenerse en cuenta en escenarios sensibles al rendimiento.
Código de ejemplo
Ejemplo
import java.util.Arrays;
public class VectorEqualsExample {
public static void main(String[] args) {
// Crear tres objetos Vector
Vector<String> vector1 = new Vector<>(Arrays.asList("Java", "Python", "C++"));
Vector<String> vector2 = new Vector<>(Arrays.asList("Java", "Python", "C++"));
Vector<String> vector3 = new Vector<>(Arrays.asList("Python", "Java", "C++"));
// Comparar vector1 y vector2
System.out.println("vector1 equals vector2: " + vector1.equals(vector2)); // true
// Comparar vector1 y vector3
System.out.println("vector1 equals vector3: " + vector1.equals(vector3)); // false
// Comparar con ArrayList
java.util.ArrayList<String> arrayList =
new java.util.ArrayList<>(Arrays.asList("Java", "Python", "C++"));
System.out.println("vector1 equals arrayList: " + vector1.equals(arrayList)); // true
}
}
Comparación con otros métodos
equals() vs ==
equals(): comparar contenido==: comparar direcciones de referencia
Ejemplo
Vector<String> v2 = new Vector<>();
Vector<String> v3 = v1;
System.out.println(v1.equals(v2)); // true
System.out.println(v1 == v2); // false
System.out.println(v1 == v3); // true
equals() vs containsAll()
equals(): requiere que el orden y la cantidad de elementos sean exactamente igualescontainsAll(): solo comprueba si contiene todos los elementos, sin considerar el orden ni la cantidad
Resumen
Vectordeequals()El método proporciona una función de comparación a nivel de contenido, y es el método estándar para determinar si dosVectorson iguales en contenido. Comprender su principio de funcionamiento y características es muy importante para utilizar correctamenteVectorlas colecciones. En la programación real, se debe elegir el método de comparación adecuado según las necesidades específicas, y prestar atención a la implementación del métodoequals()de los objetos personalizados.
Java Vector