ArrayList.clear()와 ArrayList.removeAll()의 차이점은 무엇입니까?
「 」라고 하는 에,arraylist
되어 있습니다.ArrayList<String> arraylist
, 와 동등합니까?
이 경우, 는 '아주 좋다', '아주 좋다', '아주 좋다'라고요?clear()
어레이 목록을 비우는 방법이 더 효율적이라고 생각하십니까?
「 」를 사용할 때 할 점이 ?arraylist.removeAll(arraylist)
arraylist.clear()
「 」의 .clear()
:
public void clear() {
modCount++;
// Let gc do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}
「 」의 .removeAll()
( )에.AbstractCollection
public boolean removeAll(Collection<?> c) {
boolean modified = false;
Iterator<?> e = iterator();
while (e.hasNext()) {
if (c.contains(e.next())) {
e.remove();
modified = true;
}
}
return modified;
}
clear()
추가 메서드 호출을 처리할 필요가 없기 때문에 훨씬 빠릅니다.
애트리가 지적했듯이c.contains(..)
를 높이다removeAll
O(n2)와 반대로clear
의 O O(n(n)
「 」의 시간 ArrayList.clear()
O(n)
및의의removeAll
O(n^2)
.
네, 네, 네, 네, 네, 네, 네, 네, 네, 네.ArrayList.clear
훨씬 더 빠릅니다.
clear()
메서드의 합니다.ArrayList
를 레레음음음음음음음음음음음음음음음음음 to to to to to to to to to to로 null
.
removeAll(Collection)
에서 메서드AbstractCollection
는 메서드를 호출하는 컬렉션에서 인수 컬렉션 내의 모든 요소를 삭제합니다.관련된 컬렉션 중 하나를 검색해야 하므로 비교적 느린 작업입니다.
가 에 한removeAll()
수집 그 자체(그리고 그러한 최적화가 있는지 의심스럽다) 단순한 것보다 훨씬 느릴 것이다..clear()
.
이와는 별도로(적어도 마찬가지로 중요): arraylist.removeAll(arraylist)
그냥 둔하고 혼란스러운 코드일 뿐이야"이 컬렉션을 클리어"라고 하는 것은 매우 거꾸로 말하는 방법입니다.이해할 수 있는 것보다 어떤 장점이 있을까요? arraylist.clear()
그들은 다른 목적을 가지고 있다. clear()
「」를 합니다.removeAll()
지정된 오브젝트를 모두 삭제하고 동작 상태를 반환합니다.
clear()
각null로 합니다;는 null로 설정합니다.
removeAll(collection)
과 합니다.remove(Object)
존재한다면.
그럴 겁니다.clear()
비교가 되지 않기 때문에 모두 제거보다 훨씬 빠릅니다.
삭제할 요소를 루프하지 않기 때문에 클리어 속도가 빨라집니다.이 방법에서는 모든 요소를 삭제할 수 있다고 가정할 수 있습니다.
Remove all
반드시 목록의 모든 요소를 삭제해야 하는 것은 아니며, 매개 변수로 제공된 요소만 삭제해야 합니다.따라서 삭제해서는 안 되는 것을 유지하기 위해서는 더 많은 노력이 필요합니다.
명확화
'루프'란 요소를 유지해야 하는지 여부를 확인할 필요가 없다는 것을 의미합니다.참조를 설정할 수 있습니다.null
삭제해야 할 요소 목록을 검색하지 않아도 됩니다.
Clear
deleteall
.
clear()가 훨씬 효율적입니다.모든 아이템을 간단히 제거할 수 있습니다.removeAll(arraylist)을 사용하면 어레이 목록 내의 모든 항목이 삭제되기 전에 어레이 목록에 존재하는지 확인하기 때문에 작업이 많이 걸립니다.
어레이 = > 실행 시 어레이 변수에 공간을 할당하면 할당된 공간을 확장하거나 제거할 수 없습니다.
ArrayList = > 이것은 어레이 목록에는 해당되지 않습니다.Array List는 실행 시 확장 및 축소할 수 있습니다.할당된 공간은 런타임에 최소화하거나 최대화할 수 있습니다.
언급URL : https://stackoverflow.com/questions/7032070/what-is-the-difference-between-arraylist-clear-and-arraylist-removeall
'source' 카테고리의 다른 글
콤마 구분 배열 출력 방법 (0) | 2022.07.26 |
---|---|
Vuex 작업으로 종속성을 가져오는 방법 (0) | 2022.07.26 |
Vue 3 클래스 기반 API, 함수 기반 API, 리액티브 API 및 컴포지션 API란 무엇입니까? (0) | 2022.07.23 |
Vue.js: API에서 데이터를 가져와 하위 컴포넌트에 전달(간단한 예) (0) | 2022.07.23 |
C에서 새로운 변수를 선언할 수 있는 경우와 선언할 수 없는 경우 (0) | 2022.07.23 |