Java中的Vector contains()方法
Vector是Java中一个线程安全的集合类,它允许我们在它的末尾添加元素,也可以在任意位置插入或删除元素。contains()方法是Vector中提供的一种查找元素的方式。contains()方法的作用是判断Vector中是否包含某个对象。它返回一个boolean值,如果存在则返回true,不存在则返回false。
Vector类的构造方法
Vector类有三种构造方法。
- Vector(): 创建一个空的Vector对象。
- Vector(int size): 创建一个指定初始大小的Vector对象。
- Vector(int size, int incr): 创建一个指定初始大小和增量的Vector对象。
其中,第一个构造方法创建的Vector对象初始大小为10,增量为0。第二个构造方法创建的Vector对象初始大小为size,增量为0。第三个构造方法创建的Vector对象初始大小为size,增量为incr。
Vector类中contains()方法的语法和用法
contains()方法的语法如下所示:
public boolean contains(Object o)
其中,o指的是要查找的元素。如果Vector中包含指定元素,则返回true,否则返回false。
下面是一个contains()方法的示例:
import java.util.Vector;
public class Test {
public static void main(String[] args) {
Vector<String> vec = new Vector<String>();
vec.add("Java");
vec.add("C++");
vec.add("Python");
vec.add("PHP");
vec.add("JavaScript");
vec.add("Ruby");
String str1 = "Python";
String str2 = "Perl";
if (vec.contains(str1)) {
System.out.println(str1 + " is found in Vector.");
} else {
System.out.println(str1 + " is not found in Vector.");
}
if (vec.contains(str2)) {
System.out.println(str2 + " is found in Vector.");
} else {
System.out.println(str2 + " is not found in Vector.");
}
}
}
上面的程序创建了一个Vector对象vec,并且在它的末尾添加了6个元素。在程序中,我们使用contains()方法查找了两个元素,即”Python”和”Perl”。因为Vector中包含”Python”,所以第一个查找返回true。而因为Vector中不包含”Perl”,所以第二个查找返回false。
在使用contains()方法时,需要注意以下几点:
- contains()方法遍历整个Vector查找元素,所以对于大型的Vector集合来说,它的时间复杂度为O(n),其中n是Vector中元素的个数。
- 当contains()方法的参数是null时,它会判断Vector中是否包含null。如果包含,则返回true;否则返回false。
- Vector中的元素可以是任意类型的对象,包括自定义的类对象。contains()方法会调用元素的equals()方法来判断元素是否相等。
Java中的equals()方法
在使用contains()方法时,它会调用元素的equals()方法来判断元素是否相等。equals()方法是Java中Object类提供的一个默认的方法,用于比较两个对象是否相等。它的语法如下所示:
public boolean equals(Object obj)
其中,obj是要比较的对象。如果对象相等,则返回true;否则返回false。
equals()方法的默认实现是比较两个对象的引用是否相等。如果我们要比较自定义对象的值是否相等,则需要重写equals()方法。
下面是一个重写equals()方法的示例:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (this.getClass() != obj.getClass()) {
return false;
}
Person other = (Person) obj;
if (this.getName() != other.getName()) {
return false;
}
if (this.getAge() != other.getAge()) {
return false;
}
return true;
}
}
上面的代码对Person类进行了重写,比较的属性为name和age。重写后的equals()方法首先判断传入的对象是否为null,然后判断对象的类是否为Person类。如果是,则将传入的对象强制转化为Person类类型,并且比较两个对象的name和age属性。如果都相等则返回true,否则返回false。
Java程序中使用contains()方法的注意事项
在Java程序中,使用contains()方法需要注意以下几点:
- 区分大小写:Vector的contains()方法是区分大小写的,所以在进行查找时需要保证传入的参数的大小写与元素中的一致。
- 元素类型匹配:Vector中的元素可以是任意类型的对象,但是在使用contains()方法时需要保证传入的参数的类型与元素的类型一致,否则equals()方法会返回false。
- 自定义对象:如果Vector中包含自定义对象,则需要在自定义类中重写equals()方法,以便contains()方法正确比较元素是否相等。
- 性能问题:对于大型的Vector集合来说,contains()方法的时间复杂度为O(n),所以在进行大量操作时需要特别注意性能问题。
结论
Vector contains()方法是Java中一种查找元素的方式,它可以判断Vector中是否包含某个对象。使用contains()方法时需要注意多个方面,例如区分大小写、元素类型匹配、自定义对象和性能问题等。通过对Vector类的构造方法的介绍以及重写equals()方法的示例,我们可以更深入地理解contains()方法的具体用法和注意事项。