第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用流獲取二維數(shù)組中每列的結(jié)果

使用流獲取二維數(shù)組中每列的結(jié)果

慕容3067478 2023-09-27 21:25:17
我是 API 流的新手,我想對 2D 數(shù)組進(jìn)行一些操作以下代碼是我想要做的事情的簡化版本。我有一個(gè)值數(shù)組:int values[][] = new int[][] {{1,2},{3,4},{5,6}};我想處理每列的值并得到int result[] = {x,y}例如,如果我做一個(gè)求和,它應(yīng)該讓我result[] = {9, 12}預(yù)先感謝您的幫助
查看完整描述

3 回答

?
qq_花開花謝_0

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊

嘗試這個(gè)。


      int values[][] = new int[][] { { 1, 2

            }, { 3, 4

            }, { 5, 6

            }

      };

      int[] v = Arrays.stream(values).reduce(new int[] { 0, 0

      }, (a, b) ->

      {

         a[0] += b[0];

         a[1] += b[1];

         return a;

      });

      System.out.println(Arrays.toString(v));

編輯:


關(guān)于您關(guān)于容納不同數(shù)量的列的其他問題。是的,你可以做到。但僅僅因?yàn)槟憧梢赃@樣做并不意味著你應(yīng)該這樣做或者這是最好的方法。下面是一個(gè)簡單的方法,可以對任何 2D 數(shù)組中的整數(shù)進(jìn)行求和,而不管行長度如何。它甚至可以處理參差不齊的數(shù)組。請注意,這對列進(jìn)行了總結(jié),先到先得,因?yàn)樗鼈儽灰暈橄鄬τ诒舜俗髮R。


初始化一個(gè)不規(guī)則(參差不齊或行長不同)的數(shù)組


      int values[][] = new int[][] { { 1

            }, { 20, 3

            }, { 1, 2, 4

            }, { 3, 4, 10

            }, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

            }

      };

現(xiàn)在使用以下方法計(jì)算總和。


   public static int[] sumColumns(int[][] vals) {

      // compute the maximum row length (most columns)

      int maxColumns = 0;

      for (int r = 0; r < vals.length; r++) {

         maxColumns = Math.max(maxColumns, vals[r].length);

      }


      // use that to initialize the return array

      int[] sums = new int[maxColumns];


      //now just iterate over the rows and columns

      // calculating the sum.  

      for (int r = 0; r < vals.length; r++) {

         for (int c = 0; c < vals[r].length; c++) {

            sums[c] += vals[r][c];

         }

      }

      return sums;

   }

要使用流創(chuàng)建任何矩形矩陣,請執(zhí)行以下操作:


           int[] result2 =

               Arrays.stream(values).reduce(new int[values[0].length], (a, b) ->

            {

               for (int i = 0; i < values[0].length; ++i) {

                  a[i] += b[i];

               }

               return a;

            });


查看完整回答
反對 回復(fù) 2023-09-27
?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

我的問題不夠精確(抱歉我的英語水平很差)。


在第一個(gè)流示例中,它基于每行有 2 個(gè)值的事實(shí)。在我的 cas 中,我將始終具有相同數(shù)量的列,但我不知道編碼時(shí)有多少列。


那么有了變量“size”,代碼將如何修改?


int values[][] = new int[][] {

            {1,2,3},

            {4,5,6},

            {7,8,9}

    };


    int size = 3;

    int[] result2 = Arrays.stream(arr)

            .reduce(new int[size],

                    (a, b) -> new int[] { a[0] + b[0], a[1] + b[1] });

    System.out.println(Arrays.toString(result2));

我更關(guān)注代碼的“a[0] + b[0]”部分


編輯:我終于得到了一些東西,但我想我可以不用for循環(huán):


int values[][] = new int[][] {

            {1,2,3},

            {4,5,6},

            {7,8,9}

    };


    int size = 3;

    int[] result2 = Arrays.stream(values)

            .reduce(new int[size],

                    (a, b) -> {

                    int[] myInt = new int[size];

                    for (int i =0; i < size ; ++i) {

                        myInt[i] = a[i] + b[i];

                    }

                    return myInt;

            });

    System.out.println(Arrays.toString(result2));


查看完整回答
反對 回復(fù) 2023-09-27
?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

這是 的一個(gè)很好的用例Collectors.teeing,但它僅在 Java 12 中可用。為了以防萬一,下面是一個(gè)用法示例:

int[]?res?=
????Arrays.stream(values)
????????.collect(
????????????Collectors.teeing(
????????????????Collectors.summingInt(arr?->?arr[0]),
????????????????Collectors.summingInt(arr?->?arr[1]),
????????????????(a,?b)?->?new?int[]?{a,?b}));


查看完整回答
反對 回復(fù) 2023-09-27
  • 3 回答
  • 0 關(guān)注
  • 147 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號