我有两个大小相同的Sorted ArrayList,分别为team_A
和team_B
,其中将team_A
的每个元素与team_B
进行比较以找到powerDiff > 0
。找到powerDiff
大于0后,从team_B
中删除该元素以减少下一个循环中的重复次数。
long calculateWin(){
long wins = 0;
int tempIndex=0;
boolean flag = false;
long powerDiff=0;
for(int i=0; i<team_A.size(); i++) {
for(int j=0; j<team_B.size(); j++) {
powerDiff = team_A.get(i) - team_B.get(j);
if(powerDiff>0) {
wins++;
tempIndex=j;
flag=true;
break;
}
}
if(flag) {
team_B.remove(tempIndex);
flag = false;
}
}
return wins;
}
上面的代码工作正常,但是由于复杂性,我想使用Java 8的Stream API优化此代码。
long calculateWin(List<Long> team_A, List<Long> team_B){
long wins = 0;
for(int i=0; i<team_A.size(); i++) {
for(int j=i; j<team_B.size(); j++) {
if(team_A.get(i) - team_B.get(j)>0) {
wins++;
break;
}
}
}
return wins;
}