배열에서 첫 번째 요소를 제거하는 가장 좋은 방법은 무엇입니까?
우선 순위 String[]
항목을 제거해야합니다. 어떻게 어디에서 할 수 있습니까?
Java의 배열 크기는 설명 수 없습니다. 따라서 기술적으로 배열에서 요소를 제거 할 수 없습니다.
배열에서 요소 제거를 시뮬레이션하는 한 가지 방법은 더 작은 새 배열을 만든 다음 원래 배열의 모든 요소를 더 작은 새 배열로 복사하는 것입니다.
String[] yourArray = Arrays.copyOfRange(oldArr, 1, oldArr.length);
그러나 위의 방법을 제안하지 않습니다. 당신은 아버지 List<String>
입니다. 목록을 사용하면 색인에서 항목을 추가하고 제거 할 수 있습니다. 다음과 유사합니다.
List<String> list = new ArrayList<String>(); // or LinkedList<String>();
list.add("Stuff");
// add lots of stuff
list.remove(0); // removes the first item
가장 간단한 방법은 아마도 다음과 같을 것입니다. 기본적으로 한 요소 더 작은 새 배열을 생성 한 다음 유지하려는 요소를 올바른 위치에 복사해야합니다.
int n=oldArray.length-1;
String[] newArray=new String[n];
System.arraycopy(oldArray,1,newArray,0,n);
많은 종류의 작업을 자주 수행하는 경우에 다른 종류의 데이터 구조 (예 : 연결 목록)를 사용하는 신호일 수 있습니다. 매번 새로운 배열을 생성하는 것은 O (n) 작업이며 배열이 크면 비용이 많이들 수 있습니다. 연결 목록은 첫 번째 요소의 O (1) 제거를 제공합니다.
다른 방법은 첫 번째 항목을 전혀 제거하지 않고 사용중인 첫 번째 보안 정책을 정수를 증가시키는 것입니다. 어레이 사용자는 가능합니다. Java String 클래스는 하위 암호화를 만들 때 내부적 으로이 메소드를 사용합니다.
빨리는 말할 것도없고 전혀 할 수 없습니다. Java의 배열은 고정 된 크기입니다. 다음 두 가지를 수행 할 수 있습니다.
- 모든 요소를 한 위로 이동 한 다음 마지막 요소를 null로 설정합니다.
- 새 배열을 만든 다음 복사합니다.
System.arraycopy
둘 중 하나에 사용할 수 있습니다 . 둘 다 O (n)입니다. 하나를 모든 것이 많은 요소를 복사하기 때문입니다.
첫 번째 요소를 자주 제거하는 경우 대신 사용 을 고려하십시오 . 은 사용할 수 당신 있습니다 으로부터 인 편의를 위해 인터페이스를 제공합니다. 함께 첫 번째 요소를 제거하여, O (1)이다. 실제로 해당 위치에 가면 요소를 제거하는 것은 O (1) 입니다. 그러나 보안은 임의의 요소에 액세스하는 것은 O (n)입니다.LinkedList
LinkedList.remove
Queue
LinkedList
ListIterator
배열의 첫 번째 "라이브"요소의 보안을 유지합니다. 첫 번째 요소를 제거 (제거하는 척)하면 O(1)
시간 작업이 수행됩니다.
요약하자면 빠른 연결 목록 방법은 다음과 있습니다.
List<String> llist = new LinkedList<String>(Arrays.asList(oldArray));
llist.remove(0);
다른 추악한 방법 :
String[] a ={"BLAH00001","DIK-11","DIK-2","MAN5"};
String[] k=Arrays.toString(a).split(", ",2)[1].split("]")[0].split(", ");
'ProgramingTip' 카테고리의 다른 글
IEnumerable에는 Count 메서드가 없습니다. (0) | 2020.10.16 |
---|---|
동일한 솔루션에서 서로 다른 두 버전의 log4net 참조 (0) | 2020.10.16 |
모델의 특정 필드 만 업데이트합니다. (0) | 2020.10.16 |
ipython 노트북의 루프에서 전체를 동적으로 업데이트하는 방법 (한 셀 내에서) (0) | 2020.10.16 |
명령 줄을 사용하여 mysql 사용자 비밀번호 변경 (0) | 2020.10.16 |