如何连接两个向量,而在Java中没有重叠部分

问题描述 投票:-1回答:2

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

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

也许还有另一种好方法?

java vector
2个回答
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;

  }

0
投票

此代码能解决您的问题吗?

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;
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.