繁体   English   中英

决定如何根据Java中输入参数的类型执行方法

[英]Decide how to execute a method based on the type of the input argument in Java

我有以下方法来查找与allVectors的输入向量v类似的向量(double列表)并返回它们的索引(int列表):

    public List returnSimilar(List v,List<List<Double>> allVectors);

现在,如果vList<Double>我希望该方法执行某组语句(A语句)并返回List<Integer> 如果vList<List<Double>>我希望该方法执行另一组语句(B语句)并返回List<List<Integer>>

如何才能做到这一点?

使您的方法通用:

public <T> List<Integer> returnSimilar(List<T> v, List<List<T>> allVectors);

如果你真的需要实现与T不同的逻辑 - 引入重载方法。

public <T> List<Integer> returnSimilar(List<T> v, List<List<T>> allVectors) {
    List<Integer> result = new ArrayList<>();
    for(int i = 0; i < allVectors.size(); i++) {
        if (allVectors.get(i).isSimilar(v)) {
            result.add(i);
        }
    return result;
}

public <T> boolean isSimilar(List<T> a, List<T> b) {
    if (a.size() != b.size()) return false;
    for (int i = 0; i < a.size(); i++) {
        if (!a.get(i).equals(b.get(i))) {
            return false;
        }
    return true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM