簡體   English   中英

比較Java中的兩個向量?

[英]Compare two vectors in java?

我想比較這兩個向量,以便返回有多少患者也是學生。 給我主要的東西,我已經添加了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;
    }
}

我先來看

if(P.contains(S)){

這是在比較兩個向量,而不是其中的各個元素。 實際上是說向量P中的向量S-這不是您要檢查的內容。

您已經隔離了Pnew和Snew-這是您要相互比較的兩個對象。 為了比較它們,您需要有一個規則來指示兩個元素是否實際上是同一個人。 簡而言之,如果Pnew所代表的人的名字與Snew所代表的人的名字相同,那么這可以被認為是同一個人

問題是您比較無效的對象

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類非常老,不常用。 您可能要切換到列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM