Java에서 어레이의 일부만 가져오시겠습니까?
자바에 정수 배열이 있는데 일부만 사용하고 싶습니다.Python에서는 이 배열[index:]과 같은 작업을 수행할 수 있으며 인덱스에서 배열이 반환됩니다.자바에서는 이런 것이 가능합니까?
Java에서 배열의 길이는 변경되지 않습니다.따라서 원하는 부품을 새 배열에 복사해야 합니다.
사용하다copyOfRangemethod를 지정합니다.어레이 클래스:
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)
어레이를 목록으로 래핑하고 하위 목록을 요청할 수 있습니다.
MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);
네, Arrays.copyOfRange를 사용할 수 있습니다.
거의 같은 처리를 합니다(복사가 있습니다.초기 어레이는 변경하지 않습니다).
다음 작업을 수행할 수 있습니다.
System.arraycopy(sourceArray, 0, targetArray, 0, targetArray.length);// copies whole array
// copies elements 1 and 2 from sourceArray to targetArray
System.arraycopy(sourceArray, 1, targetArray, 0, 2);
javadoc for System을 참조하십시오.
Java 1.6 이상을 사용하는 경우 를 사용하여 어레이의 일부를 복사할 수 있습니다.javadoc에서:
지정된 배열의 지정된 범위를 새 배열로 복사합니다.범위의 초기 인덱스(시작)는 0과 0 사이에 있어야 합니다.
original.length, 포함.가치:original[from]카피의 초기 요소에 배치됩니다(단,from == original.length또는from == to). 원래 배열의 후속 요소의 값은 복사본의 후속 요소에 배치됩니다.범위의 최종 인덱스(to)는 다음과 같아야 합니다.from, 보다 클 수 있습니다.original.length이 경우false의 인덱스가 다음 값 이상인 복사본의 모든 요소에 배치됩니다.original.length - from반환되는 어레이의 길이는 다음과 같습니다.to - from.
다음으로 간단한 예를 제시하겠습니다.
/**
* @Program that Copies the specified range of the specified array into a new
* array.
* CopyofRange8Array.java
* Author:-RoseIndia Team
* Date:-15-May-2008
*/
import java.util.*;
public class CopyofRange8Array {
public static void main(String[] args) {
//creating a short array
Object T[]={"Rose","India","Net","Limited","Rohini"};
// //Copies the specified short array upto specified range,
Object T1[] = Arrays.copyOfRange(T, 1,5);
for (int i = 0; i < T1.length; i++)
//Displaying the Copied short array upto specified range
System.out.println(T1[i]);
}
}
copyOfRange를 체크합니다.또, 다음의 예를 나타냅니다.
int[] arr2 = Arrays.copyOfRange(arr,0,3);
다음과 같은 것을 사용할 수 있습니다.
public static int[] range(int[] array, int start, int end){
int returner[] = new int[end-start];
for(int x = 0; x <= end-start-1; x++){
returner[x] = array[x+start];
}
return returner;
}
이는 Array.copyOfRange와 동일한 작업을 수행하지만 Import는 하지 않습니다.
사용할 수 있습니다.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)method는 두 번째 변수(var2 - 1)에서 -1을 수행합니다.그 이유는 정확히 알 수 없지만 어레이 크기를 초과할 가능성을 줄이기 위해서입니다.
언급URL : https://stackoverflow.com/questions/11001720/get-only-part-of-an-array-in-java
'programing' 카테고리의 다른 글
| vuejs 필터에 인수를 전달하는 방법 (0) | 2022.08.08 |
|---|---|
| C99의 가장 유용한 신기능은 무엇입니까? (0) | 2022.08.08 |
| vue-test-utils 및 joke에서 $nuxt 개체를 조롱하는 방법 (0) | 2022.08.08 |
| Vue.js 2 - 본문 태그에서 초기 여백 제거 (0) | 2022.08.08 |
| 미포획 방법(약속)TypeError: orders.For는 함수가 아닙니다.VueJS 2 (0) | 2022.08.08 |