배열의 경우 push () 또는 pop ()과 동일합니까?
기본 Java 파일에서 만든 배열에서 항목을 추가, 제거 및 참조하려고하지만 올바른 구문을 파악하는 데 문제가 있습니다. 액션 스크립트에는 배열에서 항목을 추가하고 제거하기 위해 push () 및 pop ()이 있습니다 .Android에 동등한 항목이 있습니까?
배열 목록 사용 http://developer.android.com/reference/java/util/ArrayList.html
Java에서 배열은 고정 된 크기 (초기화 후)를 가지며, 이는 배열에서 항목을 추가하거나 제거 할 수 없음을 의미합니다.
int[] i = new int[10];
위의 스 니펫은 정수 배열의 길이가 10임을 의미합니다. 다음과 같이 참조를 새 배열에 다시 할당하지 않으면 11 번째 정수를 추가 할 수 없습니다.
int[] i = new int[11];
Java에서 패키지 java.util에는 배열과 유사한 컬렉션에서 항목 추가 및 제거를 처리 할 수있는 모든 종류의 데이터 구조가 포함됩니다. 클래식 데이터 구조 스택에는 푸시 및 팝 메소드가 있습니다.
코드를 리팩토링하여 배열을 Collection
s (예 :)로 대체 할 시간이없는 사람들에게는 ArrayList
대안이 있습니다. Collection
s 와 달리 배열의 길이는 변경할 수 없지만 다음과 같이 배열을 바꿀 수 있습니다.
array = push(array, item);
단점은
- 푸시 할 때마다 전체 배열을 복사해야합니다.
- 원래 배열
Object
은 변경되지 않으므로 변수를 적절하게 업데이트해야합니다.
에 대한 push
방법 은 다음과 같습니다 String
.
(에 push
대해 String
하나,에 대해 하나 int
등 여러 메서드를 만들 수 있습니다. )
private static String[] push(String[] array, String push) {
String[] longer = new String[array.length + 1];
for (int i = 0; i < array.length; i++)
longer[i] = array[i];
longer[array.length] = push;
return longer;
}
이 대안은 더 효율적이고 짧으며 읽기 어렵습니다.
private static String[] push(String[] array, String push) {
String[] longer = new String[array.length + 1];
System.arraycopy(array, 0, longer, 0, array.length);
longer[array.length] = push;
return longer;
}
LinkedList를 사용할 수 있습니다. 그것은 peek, poll 및 offer 방법이 있습니다.
Arrays.copyOf()
약간의 반사와 함께 사용 하여 멋진 도우미 기능을 만들 수 있습니다.
public class ArrayHelper {
public static <T> T[] push(T[] arr, T item) {
T[] tmp = Arrays.copyOf(arr, arr.length + 1);
tmp[tmp.length - 1] = item;
return tmp;
}
public static <T> T[] pop(T[] arr) {
T[] tmp = Arrays.copyOf(arr, arr.length - 1);
return tmp;
}
}
용법:
String[] items = new String[]{"a", "b", "c"};
items = ArrayHelper.push(items, "d");
items = ArrayHelper.push(items, "e");
items = ArrayHelper.pop(items);
결과
원본 : a, b, c
푸시 호출 후 배열 : a, b, c, d, e
팝 호출 후 배열 : a, b, c, d
참고 URL : https://stackoverflow.com/questions/4537980/equivalent-to-push-or-pop-for-arrays
'Program Tip' 카테고리의 다른 글
D3로 "실시간"그래프 생성 (0) | 2020.11.15 |
---|---|
Jasmine과 함께 작동하도록 requirejs 얻기 (0) | 2020.11.15 |
.Wait () 대 .GetAwaiter (). GetResult ()의 차이점은 무엇입니까? (0) | 2020.11.15 |
연동 및 휘발성 (0) | 2020.11.15 |
Rails 4에서 secret_key_base의 용도는 무엇입니까? (0) | 2020.11.15 |