stack 中存储了两种类,一种是trigger 类,一个是argument 对象,下面的程序就是判断两个stack 是否相同
/**
* 判断两个stack 是否相同
*/
public boolean IsSameStack(Stack stack1,Stack stack2)
{
boolean boole = false;
Stack st1 = new Stack();
Stack st2 = new Stack();
if(stack1.isEmpty()||stack2.isEmpty())
{
boole = false;
}else if((stack1.size() == stack2.size())== false)
{
boole = false;
}else
{
int j =0;
for(int i =1; i < ((stack1.size()) + j + 1); i++)
{
if((stack1.peek() instanceof Trigger) && (stack2.peek() instanceof Trigger))
{
Trigger tr1 = (Trigger)stack1.pop();
Trigger tr2 = (Trigger)stack2.pop();
st1.push(tr1);
st2.push(tr2);
boole = IsSameTrigger(tr1,tr2);
if(boole == false)
{
break;
}
j++;
}else if((stack1.peek() instanceof Argument) && (stack2.peek() instanceof Argument))
{
Argument arg1 = (Argument)stack1.pop();
Argument arg2 = (Argument)stack2.pop();
st1.push(arg1);
st2.push(arg2);
boole = IsSameArgu(arg1,arg2);
if(boole == false)
{
break;
}
j++;
}else
{
break;
}
}
}
int n = 0;
for(int m = 1; m < (st1.size()+ 1 + n); m++)
{
stack1.push(st1.pop());
stack2.push(st2.pop());
n++;
}
return boole;
}
/**
* 比较两个trigger实例是否相同
*/
public boolean IsSameTrigger(Trigger t1,Trigger t2)
{
boolean b = false;
if((t1.getTriggerId() == t2.getTriggerId()) && (t1.getTriggerWord() == t2.getTriggerWord()) && (t1.getTriggerType() == t2.getTriggerType()))
{
b = true;
}else
{
b = false;
}
return b;
}
/**
* 比较两个论元实例是否相同
*/
public boolean IsSameArgu(Argument arg1,Argument arg2)
{
boolean bo = false;
if((arg1.getArguId() == arg2.getArguId())&&(arg1.getProtein() == arg2.getProtein())&&(arg1.getArguType() == arg2.getArguType()))
{
bo = true;
}else
{
bo = false;
}
return bo;
}