Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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 8流结构更简洁地表达以下逻辑:_Java_Java 8_Java Stream - Fatal编程技术网

是否可以使用Java 8流结构更简洁地表达以下逻辑:

是否可以使用Java 8流结构更简洁地表达以下逻辑:,java,java-8,java-stream,Java,Java 8,Java Stream,是否可以使用Java 8流结构更简洁地表达以下逻辑: int[] gameState = {2, 2, 2, 2, 2, 2, 2, 2, 2}; int[][] winningPositions = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}, {0, 3, 6},

是否可以使用Java 8流结构更简洁地表达以下逻辑:

int[] gameState = {2, 2, 2, 2, 2, 2, 2, 2, 2};                                                                                                    
int[][] winningPositions = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}, {0, 3, 6},  
     {1, 4, 7}, {2, 5, 8}, {0, 4, 8}, {2, 4, 6}};

for (int[] winningPosition : winningPositions) {                                  

   System.out.println("RST " + gameState[winningPosition[0]] );                  

   if (gameState[winningPosition[0]] == gameState[winningPosition[1]]            
           && gameState[winningPosition[1]] == gameState[winningPosition[2]]     
           && gameState[winningPosition[0]] != 2) {                              

       // Somone has won!                                                        

       gameActive = false;

       String winner = "";                                                       

       if (activePlayer == 1) {                                                  

           winner = "Yellow";                                                    

       } else {                                                                  

           winner = "Red";                                                       

       }                                                                         
   }                      

我想将此代码更改为流

像这样的东西怎么样

Arrays.stream(winningPositions) // Stream<int[][]>
      .anyMatch(win ->  // win is an int[] array
                gameState[win[0]] == gameState[win[1]] && 
                gameState[win[1]] == gameState[win[2]] && 
                gameState[win[0]] != 2
      ); // anyMatch will stop as soon as match has been found. 
Arrays.stream(winningPositions)//stream
.anyMatch(win->//win是一个int[]数组
游戏状态[win[0]]==游戏状态[win[1]]&&
游戏状态[win[1]]==游戏状态[win[2]]&&
游戏状态[赢[0]!=2
); // 一旦找到匹配项,任何匹配项都将停止。

尽管与您最初的方法相比,它可能没有任何真正的优势

数组.stream(winningPositions).filter(e->e[0]==e[1]&&e[0]==e[2]&&e[0]!=2).forEach(e->System.out.println(e[0]+“”+e[1]+“”+e[2]);我需要另一只鹦鹉///有人赢了!gameActive=false;字符串赢家=”;如果(activePlayer==1){winner=“Yellow”}其他{winner=“Red”}我使用了filter,filter和anymatch有什么不同