比较java中的两个向量?

时间:2014-03-11 12:29:31

标签: java vector

我想比较这两个载体,以便它将返回有多少患者也是学生。我得到了主要的,我已经添加到HistAndMarks方法但它似乎没有工作。主要的混淆是使用HistAndMarks方法以及如何比较两个向量。

由于

import java.util.*;
public class Ex6 {

    public static int count = 0;

     public static void main(String[] a)
     {
        Vector<Patient>  P = new Vector<Patient>();
        Vector<Student>  S = new Vector<Student>();
       int i=Integer.parseInt(a[0]);
       if (i==0) {
          P.add(new Patient("Jimmy1","1","d"));
          P.add(new Patient("Jimmy2","1","d"));
          P.add(new Patient("Jimmy3","1","d"));
          P.add(new Patient("Jimmy","1","d"));
          S.add(new Student("Jimmy1","1",null) );
          S.add(new Student("Jimmy2","1",null) );
          S.add(new Student("Jimmy3","1",null) );
          S.add(new Student("Lisa","1",null) );
          System.out.println(new Ex6().HistAndMarks(P,S));
        }
         if (i==1) {
          P.add(new Patient("Jimmy","1","d"));
          S.add(new Student("Jimmy1","1",null) );
           System.out.println(new Ex6().HistAndMarks(P,S));
        }
        if (i==2)  System.out.println(new Ex6().HistAndMarks(P,null));
    }

     public static int HistAndMarks (Vector<Patient>  P, Vector<Student>  S) {

        for(int i = 0; i > P.size(); i++){
            for(int z = -1; z > S.size(); z++){
                Patient Pnew = P.get(i);
                Student Snew = S.get(z + 1);
                if(P.contains(S)){
                    count = count + 1;

                }
            }
        }
       return count;
    }
}

2 个答案:

答案 0 :(得分:1)

我从

开始
if(P.contains(S)){

这是比较两个向量,而不是它们中的各个元素。它有效地说是Vector P中的Vector S - 这是你想要检查的内容。

你已经隔离了Pnew和Snew--这些是你想要相互比较的两个对象。为了比较它们,您需要有一个规则来指示这两个元素是否实际上是同一个人。简单地说,如果Pnew表示的人的姓名与Snew所代表的人的姓名相同,那么这两者可以被认为是同一个人

答案 1 :(得分:0)

问题是您比较无效对象

if(P.contains(S)){
  count = count + 1;
}

可能应该是

if(P.contains(Snew)){
  count = count + 1;
}

请注意,您不必遍历两个列表:

public static int histAndMarks(Vector<Patient>  patients, Vector<Student>  students) {

    int count = 0; 

    for(Patient patient : patients) { //Fetch next patient
       if(students.contains(patient) { //Check that students contains patient 
          count++; //Add one to counter
       }
    }

    return count;
}

请注意,Vetctor类很老,不常用。您可能想切换到List