为邻居过滤数组
Filtering arrays for neighbors
有没有一种简单的方法可以快速过滤元素数组以仅输出相邻元素?
假设我有一个元素数组。现在我想找到特定元素的邻居。
我编写的代码有效,但看起来很丑陋,我想找到一个更易于阅读的解决方案。
我的代码:
int[] myArray = {6, 8, 9, 12, 30};
// index of element where I want to find the neighbors of
int index = 1;
if(index == 0){
//first element so only add the right neighbor
System.out.println(myArray[1]);
} else if(index == myArray.length -1){
//last element so only add left neighbor
System.out.println(myArray[index-1]);
} else{
//middle element so add both neighbors
System.out.println(myArray[index-1]);
System.out.println(myArray[index+1]);
}
这是一个很好的简短解决方案:
if(index > 0) System.out.println(myArray[index-1])
if(index < array.length-1) System.out.println(myArray[index+1])
实际上,使用 Java 8 你可以通过非常简单的 lambda 解决方案来使用它:
final int[] numbs = { 1, 3, 5, 7 };
int index = 2;
IntStream.rangeClosed(index - 1, index + 1)
.filter(idx -> idx != index && idx >= 0 && idx < numbs.length)
.forEach(idx -> System.out.println(numbs[idx]));
但是请创建一个方法来接收您的数组和索引以便重用代码。
有没有一种简单的方法可以快速过滤元素数组以仅输出相邻元素?
假设我有一个元素数组。现在我想找到特定元素的邻居。
我编写的代码有效,但看起来很丑陋,我想找到一个更易于阅读的解决方案。
我的代码:
int[] myArray = {6, 8, 9, 12, 30};
// index of element where I want to find the neighbors of
int index = 1;
if(index == 0){
//first element so only add the right neighbor
System.out.println(myArray[1]);
} else if(index == myArray.length -1){
//last element so only add left neighbor
System.out.println(myArray[index-1]);
} else{
//middle element so add both neighbors
System.out.println(myArray[index-1]);
System.out.println(myArray[index+1]);
}
这是一个很好的简短解决方案:
if(index > 0) System.out.println(myArray[index-1])
if(index < array.length-1) System.out.println(myArray[index+1])
实际上,使用 Java 8 你可以通过非常简单的 lambda 解决方案来使用它:
final int[] numbs = { 1, 3, 5, 7 };
int index = 2;
IntStream.rangeClosed(index - 1, index + 1)
.filter(idx -> idx != index && idx >= 0 && idx < numbs.length)
.forEach(idx -> System.out.println(numbs[idx]));
但是请创建一个方法来接收您的数组和索引以便重用代码。