source

ArrayList.clear()와 ArrayList.removeAll()의 차이점은 무엇입니까?

goodcode 2022. 7. 26. 23:38
반응형

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(..) 를 높이다removeAllO(n2)와 반대로clear의 O O(n(n)

「 」의 시간 ArrayList.clear()O(n) 및의의removeAllO(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

반응형