我在Java中有一个整数数组,我只想使用它的一部分。我知道在Python中,你可以这样做数组[index:],它从索引中返回数组。这在Java中是可能的吗?
当前回答
您可以将数组包装为列表,并请求它的子列表。
MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
其他回答
你可以在整数arr上使用subList(int fromIndex, int toIndex)方法,就像这样:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> arr = new ArrayList<>();
arr.add(1);
arr.add(2);
arr.add(3);
arr.add(4);
List<Integer> partialArr = arr.subList(1, 3);
// print the subArr
for (Integer i: partialArr)
System.out.println(i + " ");
}
}
输出将是:2 3。
注意,subList(int fromIndex, int toIndex)方法对它接收到的第二个变量(var2 - 1)执行- 1,我不知道确切的原因,但这就是发生的事情,可能是为了减少超出数组大小的机会。
查看copyOfRange;例子:
int[] arr2 = Arrays.copyOfRange(arr,0,3);
您可以将数组包装为列表,并请求它的子列表。
MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
是的,你可以使用Arrays.copyOfRange
它做的是同样的事情(注意有一个副本:你不改变初始数组)。
在Java中数组的长度是不可变的。因此,您需要将所需的部分复制到一个新数组中。 使用java.util.Arrays类中的copyOfRange方法:
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
startIndex是要复制的范围的初始索引,包括。 endIndex是要复制的范围的最终索引,独占。(这个索引可以在数组之外)
例如:
//index 0 1 2 3 4
int[] arr = {10, 20, 30, 40, 50};
Arrays.copyOfRange(arr, 0, 2); // returns {10, 20}
Arrays.copyOfRange(arr, 1, 4); // returns {20, 30, 40}
Arrays.copyOfRange(arr, 2, arr.length); // returns {30, 40, 50} (length = 5)
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 使用C返回一个数组
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 向对象数组添加属性
- 在Java流是peek真的只是调试?