Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较java中的两个向量?_Java_Vector - Fatal编程技术网

比较java中的两个向量?

比较java中的两个向量?,java,vector,Java,Vector,我想比较这两个向量,这样它会返回多少患者也是学生。我得到了main,并添加了HistAndMarks方法,但它似乎不起作用。主要的困惑在于HistAndMarks方法以及我将如何比较两个向量 谢谢 import java.util.*; public class Ex6 { public static int count = 0; public static void main(String[] a) { Vector<Patient>

我想比较这两个向量,这样它会返回多少患者也是学生。我得到了main,并添加了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;
    }
}
import java.util.*;
公共类Ex6{
公共静态整数计数=0;
公共静态void main(字符串[]a)
{
向量P=新向量();
向量S=新向量();
int i=Integer.parseInt(a[0]);
如果(i==0){
P.add(新患者(“Jimmy1”、“1”、“d”);
P.add(新患者(“Jimmy2”、“1”、“d”));
P.add(新患者(“Jimmy3”、“1”、“d”);
P.add(新患者(“吉米”、“1”、“d”));
S.add(新学生(“Jimmy1”,“1”,空));
S.add(新学生(“Jimmy2”,“1”,空));
S.add(新学生(“Jimmy3”,“1”,空));
S.add(新学生(“Lisa”,“1”,空));
System.out.println(新的Ex6().HistAndMarks(P,S));
}
如果(i==1){
P.add(新患者(“吉米”、“1”、“d”));
S.add(新学生(“Jimmy1”,“1”,空));
System.out.println(新的Ex6().HistAndMarks(P,S));
}
if(i==2)System.out.println(new Ex6().HistAndMarks(P,null));
}
公共静态int HistAndMarks(向量P,向量S){
对于(int i=0;i>P.size();i++){
对于(intz=-1;z>S.size();z++){
患者Pnew=P.get(i);
学生Snew=S.get(z+1);
如果(第页包含){
计数=计数+1;
}
}
}
返回计数;
}
}

问题是您比较了无效对象

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;
}
public static int histAndMarks(病媒患者、病媒学生){
整数计数=0;
对于(患者:患者){//取下一个患者
如果(students.contains(patient){//检查学生是否包含patient
count++;//向计数器添加一个
}
}
返回计数;
}

请注意,
vector
类非常古老,不常用。您可能想切换到我首先看一下

if(P.contains(S)){
这是比较两个向量,而不是其中的单个元素。它实际上是说向量p中的向量s-这是而不是您想要检查的内容


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

remove>from for loop..使其成为请将您的方法重命名为
histAndMarks
。根据您想要识别的基础,患者是否是学生…使用他们的姓名或其他内容来扩展@Maroun的注释,使用方法名称为“动词,大小写混合,第一个字母小写,每个内部单词的第一个字母大写”。当您执行
P.contains(S)
时,
S
是整个向量。您可能的意思是
P.contains(Snew)
。另外,要意识到这将使用
equals()
进行比较-你需要确保你的对象比较正确。是的,这就是我想要做的,你说的最后一部分很准确,我只是不知道如何将它实现到我的代码中。如果没有看到Patient和Student类,我就不知道该怎么说,但是类似于“if Pnew.getName().equals(Snew.getName())这可能是你想要的。