亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為鋸齒狀數組 java 覆蓋 next()?

如何為鋸齒狀數組 java 覆蓋 next()?

蠱毒傳說 2021-09-26 16:24:06
我有一個鋸齒狀的數組。如何覆蓋next(),以便我可以逐步獲取其元素?
查看完整描述

3 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

這可能是您問題的錯誤答案。在這種情況下,我會刪除它,但也許您可以將它用于您想要實現的目標:


int[][] it = {{1,2}, {3,4,5}};


OfInt iterator = Arrays.stream(it).flatMapToInt(x -> IntStream.of(x)).iterator();

iterator.forEachRemaining((IntConsumer) System.out::print);

流式傳輸鋸齒狀數組,將其平面映射為一個IntStream,然后用它做你想做的事。在這個例子中,我獲取了迭代器,但你可能只想要:


Arrays.stream(it).flatMapToInt(x -> IntStream.of(x)).forEach((IntConsumer) System.out::print); 

在forEach你可以做你需要的,或使用其他一些方法IntStream


查看完整回答
反對 回復 2021-09-26
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

公共類 IteratorFor2DArray 實現 Iterator {


private int size;

private int i = 0;

private int j = 0;

private int[][] values = new int[i][j];

private int position = 0;


public IteratorFor2DArray(int[][] values) {

    this.values = values;

    this.size = countOfElements(values);

}


private int countOfElements(int[][] values) {

    int count = 0;

    for (int[] row : values) {

        count += row.length;

    }

    return count;

}


@Override

public boolean hasNext() {

    return position < size;

}


@Override

public Integer next() {

    if (position >= size) {

        throw new NoSuchElementException();

    }

    int element = values[i][j];

    position++;

    j++;

    while (i < values.length && j >= values[i].length) {

        j = 0;

        i++;

    }

    return element;

}

}


查看完整回答
反對 回復 2021-09-26
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

我還找到了另一種方法:


public class IteratorFor2DArray implements Iterator {


    private int[][] data;

    private int i, j;


    public IteratorFor2DArray(int[][] data) {

        this.data = data;

    }


    @Override

    public Integer next() {

        if (!hasNext()) {

            throw new NoSuchElementException();

        }

        int element = data[i][j];

        j++;

        while (i < data.length && j >= data[i].length) {

            j = 0;

            i++;

        }

        return element;

    }


    @Override

    public boolean hasNext() {

        return (i < data.length && j < data[i].length);

    }

}


查看完整回答
反對 回復 2021-09-26
  • 3 回答
  • 0 關注
  • 242 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號