Javaでtuple`の `一覧を表示するには` list`を変更する方法

カタリナ:

私は、変換に以下の機能を使用していますsublistsのをlist0し、残りの要素1がiは、データ構造を変更しようとしていますlist of tuple

例えば、関数は、入力を提供[1,2,3,5,10]します[0,0,0,1,1]どのように私はこのような次のような出力を得るために、このデータ構造に変換することができますか[(0,1),(0,2),(0,3),(1,5),(1,10)]それとも、可能な場合は別の同様のデータ構造へ?お気に入りlist of two element arrays

public static void main(String[] args) {
    int[] arr = { 1, 8, 1, 9, 10 };

    // assume arr.length >= 2
    boolean asc = arr[1] - arr[0] == 1;
    for (int i = 1; i < arr.length - 1; i++) {
        if (arr[i + 1] - arr[i] == 1) {
            arr[i] = 0;
            asc = true;
        } else {
            if (asc) {
                asc = false;
                arr[i] = 0;
            }
            else {
                arr[i] = 1;
            }
        }
    }
    arr[arr.length - 1] = asc ? 0 : 1;

    for (int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
}
ヨアキムダニエルソン:

あなたの値を保持するクラスタプルを作成することができます

public class Tuple {
    int first;
    boolean second;

    public Tuple(int first, boolean second) {
        this.first = first;
        this.second = second;
    }

    @Override
    public String toString() {
        return String.format("(%d, %b)", first, second);
    }
}

そして、わずかにそれを使用するようにコードを変更します

final int[] arr = { 1, 8, 1, 9, 10 };
Tuple[] result = new Tuple[arr.length];

boolean asc = arr[1] - arr[0] == 1;
result[0] = new Tuple(arr[0], asc);
for (int i = 1; i < arr.length - 1; i++) {
    if (arr[i + 1] - arr[i] == 1) {
        asc = true;
    } else {
        if (asc) {
            asc = false;
        }
    }
    result[i] = new Tuple(arr[i], asc);
}
result[arr.length - 1] = new Tuple(arr[arr.length - 1], asc);
for (int i = 0; i < arr.length; i++) {
    System.out.println(result[i]);
}

この出力

(1、偽)
(8、偽)
(1、偽)
(9、真)
(10、TRUE)

ループの場合/他の内部おそらく改善することができるが、それは答えに不可欠ではなかったので、私は自分自身を行っていないことを注意

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=318595&siteId=1