유지됩니까 빠른 (보았으매 와 nice) 에서 요소를 제거하는 방법을 어레이에서는 자바 가상 머신 (jvm) 에?
array = ArrayUtils.removeElement(array, element)
[commons.apache.org 라이브러리: javadoc] (http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/ArrayUtils.html)
public static String[] removeElements(String[] input, String deleteMe) {
List result = new LinkedList();
for(String item : input)
if(!deleteMe.equals(item))
result.add(item);
return result.toArray(input);
}
NB: 이는 검증되지 않은. 오류 검사 그대로 표시됨과 실습에서는 다운스트림에서 판독기에서 (I& 던질 경우, 입력 또는 저를 지워주세요 널임 이가라구멍렉세페시옹 # 39; d # 39, 빈 목록에 nulll 목록*.직렬 입력입니다 doesn& 쉽게 이해할 수 없다. # 39 에서 쉽게 이해할 수 있지만, ll 제거 nulll 문장열 어레이입니다 권능은하나님께 I& 남겨두십시오 운동이 너무 것으로 보고 있다. 현재 이를 던질 때 저를 지워주세요 시도할 경우 충족되었으며 NPE 는 호출하십시오 있는 저를 지워주세요 널임.)
내가 내가 선택할 수 있습니다.
링케드리스트 사용. 그냥 빨리 해야 할 경우, 또는 할당 조절되어 이터레이션에 집회나 너무 많은 요소를 크게 바뀌엇어요 삭제에서 끝날 경우. 초기 크기를 사용할 수 있는 라일리스트 설정하고 디스테이징하는 입력입니다. # 39, make it wouldn& 가능성이 큰 차이가 없다.
약간만이라도 취합은 사용할 수 있는 최선의 선택, 어떤 이유에서인지 사용하여 신앙이니라 맞지 않는 ['라이코프'] (https://docs.oracle.com/javase/7/docs/api/java/lang/System.html # 라이코프 (% % % %20int 20int 20java.lang.object 20int 자바드랑드로비치,,)). 및 복사할 수 있습니다 같은 어레이입니다 dell. 약간 다른 오프셋입니다.
예를 들면 다음과 같습니다.
public void removeElement(Object[] arr, int removedIdx) {
System.arraycopy(arr, removedIdx + 1, arr, removedIdx, arr.length - 1 - removedIdx);
}
이에 대해 편집하십시오 셀명:
할당하고자 컬렉션 (tcpg 새 array) 한 후, 삭제하시겠습니까 요소를 사용하여 취합은 할 수 있는 라이코프) 그런 다음 그 위에 토라리 호출하십시오 (tcpg 새로운 두 번째 배열), s 가 아니라 # 39 미국 각 지점에 it& 누구이뇨 삭제하시겠습니까 최적화합니다 it& # 39 의 문제를 자신의 나쁜 프로그래밍.
인도하심이라만일 어레이에서는 100mb 의 ram, 말하도다 차지하고 있다고 가정합시다. 이제 반복할 삭제하시겠습니까 운영까지도 정보기술 (it) 과 20 요소.
Give it a try.
내가 알고 있는 # 39, s not going to be 큰 solaris. it& 조교하실 않은 경우, 또는 삭제 한 번에 많이 있지만 그 코드를 다르게 I& you& # 39; d # 39, ve 고정식입니다 가혹한 누군가가 그렇게 많은 코드를 creditbank. 가정을 했다.
좋은 대신 사용할 수 있는 솔루션을 약간만이라도 바뀌엇어요 어레이입니다 1 위를 차지했다.
List.remove(index)
Foo[] result = new Foo[source.length - 1];
System.arraycopy(source, 0, result, 0, index);
if (source.length != index) {
System.arraycopy(source, index + 1, result, index, source.length - index - 1);
}
('라이스콜라리스트' 도 좋은 후보를 배열 doesn& 지원할 수 있지만, t # 39 것 같다 '' 제거하시겠습니까.)
낮은 수준의 성능을 위한 빠른 및 더러운 것, 그것은 보통 의해 이미 난독화 스테이드 사교 통해 반드시 루프, etc. 이 경우 변환, 심지어 리소스에는 집약형에 앞뒤로 수집 및 어레이에는 번거로운 읽을 수 있다.
그나저나, 탑 코더, 진짜 아무한태도? 항상 그 어레이입니다 매개변수입니다! 그래서 준비해야 할 때 이를 처리할 수 있는 진출한다.
다음은 문제에 대한 나의 해석 및 솔루션. 다른 것은 모두 ᄀ씨 서장님은 제로버트 및 기능을 통해 한 주어진다. 또한, 이 경우 해당 요소가 적절하게 처리하는 않는 어레이입니다.
도움이 되길 바란다!
public char[] remove(char[] symbols, char c)
{
for (int i = 0; i < symbols.length; i++)
{
if (symbols[i] == c)
{
char[] copy = new char[symbols.length-1];
System.arraycopy(symbols, 0, copy, 0, i);
System.arraycopy(symbols, i+1, copy, i, symbols.length-i-1);
return copy;
}
}
return symbols;
}
아라위티우스 apiu 에서 사용할 수 있습니다 좋은 보았으매 way" 제외시키려면 ";). 많은 작업을 (제거, 찾기, 추가 map_layer 등) 를 구현하는 배열입니다. 한 번 보시죠. 내 인생을 it 카으바를 간단해진다는.
디스테이징하는 어레이에서는 변경할 수 없습니다 수 있지만 값을 저장할 수 있는 새로운 가치와 복사하여 변경하십시오 인덱스화할 기존 인덱스화할 수 있다. 10 = 1, 2 = 1 = 마이크 제프 / / 조지 11 마이그레이션된 덮어쓰기는 마이크.
Object[] array = new Object[10];
int count = -1;
public void myFunction(String string) {
count++;
if(count == array.length) {
count = 0; // overwrite first
}
array[count] = string;
}
좀 더 사전 조건 및 다이든 ᄀ씨 서장님은 쓴 수준들과 필요합니다
Object[] newArray = new Object[src.length - 1];
if (i > 0){
System.arraycopy(src, 0, newArray, 0, i);
}
if (newArray.length > i){
System.arraycopy(src, i + 1, newArray, i, newArray.length - i);
}
return newArray;
그래, thx 많이유 이제 내가 사용하는 스테 다음과 같습니다.
public static String[] removeElements(String[] input, String deleteMe) {
if (input != null) {
List<String> list = new ArrayList<String>(Arrays.asList(input));
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals(deleteMe)) {
list.remove(i);
}
}
return list.toArray(new String[0]);
} else {
return new String[0];
}
}
[복제본에] [1] 기존 어레이입니다 어레이이며 다른 영역으로 분리할 수 없는 요소.
A 를 사용하는 것이 더 간단, 그렇게 할 바뀌엇어요 설정되었습니다. 제거 및 사용 () 메서드입니다.
[1]: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html # 라이코프 (% % % %20int 20int 20java.lang.object 20int 자바드랑드로비치,,)