如何在Java中串联两个向量而不重叠部分

时间:2019-12-17 13:15:03

标签: java vector

我想要一种方法,该方法去除相同类型的两个向量的重叠部分,然后进行连接并返回。

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仍然有相同的问题。

也许还有另一种好方法?

2 个答案:

答案 0 :(得分:1)

一种方法是从通配符转换为参数化类型。

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;

  }

答案 1 :(得分:0)

尝试将通配符更改为通用类型。

public static <T> Vector<T> concatenateVector(Vector<T> baseVector, Vector<T> additionVector) {

    additionVector.removeAll(baseVector)
    baseVector.addAll(additionVector);
    return baseVector;
}

我删除了getClass,因为两者都返回了向量,所以对于泛型类型,此验证不是必需的。

if (baseVector.getClass().equals(additionVector.getClass())) {
相关问题