问题描述
创建一个方法uniqueValue,该方法返回2d整数数组集合。该方法接受2d整数数组,以便为每个维度以升序返回唯一集合。
示例:
输入:
int [][] myArray = {
{ 5,32,8,45,9,10,1,2,6,8 },{ 4,3,7,2 }
};
输出:
int[][] newArray = {
{ 1,5,45 },{1,4,7}
};
解决方法
以下解决方案使用Java Stream API:
static int[][] sortAndRemoveDuplicates(int[][] arr) {
return Arrays.stream(arr) // Stream of int[]
.map(row -> // process each row
IntStream.range(0,row.length) // analog of for loop,stream of indexes
.map(i -> row[i]) // convert to stream of int elements
.sorted() // sort in ascending order by default
.distinct() // remove duplicates
.toArray() // build int[] array
)
.toArray(int[][]::new); // build result 2D array
}
测试:
int[][] myArray = {
{5,32,8,45,9,10,1,2,6,8},{4,3,7,2}
};
int[][] newArray = sortAndRemoveDuplicates(myArray);
Arrays.stream(newArray)
.map(Arrays::toString)
.forEach(System.out::println);
输出:
[1,5,45]
[1,4,7]
,
java提供了一个名称为Arrays
的类,它为您提供了很多选择,例如,我曾经对数组进行排序,然后删除了重复项:
int[][] myArray = { { 5,8 },{ 4,2 } };
for (int i = 0; i < myArray.length; i++) {
Arrays.sort(myArray[i]);
myArray[i] = Arrays.stream(myArray[i]).distinct().toArray();
}
for (int i = 0; i < myArray.length; i++) {
System.out.println(Arrays.toString(myArray[i]));
}