如何在java中将'List'更改为'List of tuple'

如何在java中将'List'更改为'List of tuple',java,arrays,list,data-structures,tuples,Java,Arrays,List,Data Structures,Tuples,我正在使用下面的函数将列表的子列表转换为0,其余元素转换为1,但我正在尝试将数据结构更改为元组列表 例如,该函数为输入[1,2,3,5,10]提供到[0,0,0,1,1]。如何转换此数据结构以获得如下输出:[(0,1)、(0,2)、(0,3)、(1,5)、(1,10)]?或者,如果可能的话,可以使用另一个类似的数据结构?类似于两个元素数组的列表 public static void main(String[] args) { int[] arr = { 1, 8, 1, 9, 10 };

我正在使用下面的函数将
列表的
子列表
转换为
0
,其余元素转换为
1
,但我正在尝试将数据结构更改为元组列表

例如,该函数为输入
[1,2,3,5,10]
提供到
[0,0,0,1,1]
。如何转换此数据结构以获得如下输出:
[(0,1)、(0,2)、(0,3)、(1,5)、(1,10)]
?或者,如果可能的话,可以使用另一个类似的数据结构?类似于两个元素数组的列表

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]);
    }
}
publicstaticvoidmain(字符串[]args){
int[]arr={1,8,1,9,10};
//假设arr.length>=2
布尔asc=arr[1]-arr[0]==1;
对于(int i=1;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]);
}
final int[]arr={1,8,1,9,10};
元组[]结果=新元组[arr.length];
布尔asc=arr[1]-arr[0]==1;
结果[0]=新元组(arr[0],asc);
对于(int i=1;i
这个输出

(1,假)
(8,假)
(1,假)
(9,正确)
(10,正确)


请注意,for循环中的if/else可能可以改进,但因为它对答案不是必需的,我自己也没有这样做过

您有两个选项,要么创建一个新类,包含两个字段以保存两个值,要么使用不同库中的成对实现之一。也许您甚至可以创建一个两个元素数组的
列表
来实现同样的效果。您能帮我选择这个选项吗:
两个元素数组的列表