我想要一个方法,该方法将删除相同类型的两个向量的重叠部分,然后进行连接并返回。
public static Vector<?> concatenateVector(Vector<?> baseVector, Vector<?> additionVector) {
if (baseVector.getClass().equals(additionVector.getClass())) {
additionVector.removeAll(baseVector);
baseVector.addAll((Collection<?>) additionVector);
return baseVector;
} else
return null;
}
但发生了错误:
The method addAll(Collection<? extends capture#3-of ?>) in the type Vector<capture#3-of ?>
is not applicable for the arguments (Vector<capture#4-of ?>)
从Vector
切换到Collection
,仍然有相同的问题。
也许还有另一种好方法?
一种方法是从通配符转换为参数化类型。
public static <T> Vector<T> concatenateVector(Vector<T> baseVector, Vector<T> additionVector) {
if (baseVector.getClass().equals(additionVector.getClass())) {
additionVector.removeAll(baseVector);
baseVector.addAll(additionVector);
return baseVector;
} else
return null;
}
此代码能解决您的问题吗?
import java.util.Collection;
import java.util.List;
import java.util.Vector;
public class VectorMain {
public static void main(String[] args) {
Vector<Integer> vector1 = new Vector();
vector1.add(1);
vector1.add(2);
Vector<String> vector2 = new Vector();
vector2.add("3");
vector2.add("4");
Vector vector = concatenateVector(vector1, vector2);
System.err.println(vector);
}
public static <T> Vector<T> concatenateVector(Vector<T> baseVector, Vector additionVector) {
baseVector.addAll(additionVector);
return baseVector;
}
}