如何使用Java 8的Stram API将ArrayList的元素与另一个ArrayList的每个元素进行比较?

问题描述 投票:-1回答:1

我有两个大小相同的Sorted ArrayList,分别为team_Ateam_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优化此代码。

java java-8 stream java-stream
1个回答
0
投票
由于两个列表都已排序,因此即使不使用流也可以进行一些优化

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; }

© www.soinside.com 2019 - 2024. All rights reserved.