복붙노트

[SCALA] 스칼라 컬렉션을 변경할 수 대에 불변

SCALA

스칼라 컬렉션을 변경할 수 대에 불변

나는 스칼라 비교적 새로운 오전 컬렉션 계층 구조를 이해하려고 노력하고 있습니다. 나는 '가변'과 '불변'컬렉션 구별이 있음을 볼 수 있지만, 이해가 안 무엇을 구현 수준과 방법이 발 및 VAR 관련에서이 사실을 의미합니다. 그 누구도 날이에 대한 몇 가지 통찰력을 줄 수 있습니까? 또한, 모든 컬렉션 클래스는 '가변'버전과 '불변'버전 또는 전용 '변경 가능'또는 '불변'이 될 수있는 몇 가지 클래스가 있습니다합니까?

해결법

  1. ==============================

    1.변경 가능한 수단을 사용하면 현재 위치에서 컬렉션을 변경할 수 있습니다. 당신이 컬렉션 C가 있고 + = 다음, C가 변경이있는 요소를 추가하고, 경우에 따라서, 그래서 컬렉션에 다른 모든 참조를 가지고있다.

    변경 가능한 수단을 사용하면 현재 위치에서 컬렉션을 변경할 수 있습니다. 당신이 컬렉션 C가 있고 + = 다음, C가 변경이있는 요소를 추가하고, 경우에 따라서, 그래서 컬렉션에 다른 모든 참조를 가지고있다.

    컬렉션 객체가 변경 결코 불변의 수단; 대신, 당신은 새 컬렉션을 반환 등 + 또는 ++ 등의 작업, 새로운 컬렉션 객체를 구축 할 수 있습니다. 이 컬렉션에 무언가를 추가 할 잠금을 필요로하지 않기 때문에이 동시 알고리즘에 유용하다. 그것은 약간의 오버 헤드의 비용으로 올 수 있지만,이 속성은 매우 유용 할 수 있습니다. 스칼라의 불변의 컬렉션을 완벽하게 영구 데이터 구조입니다.

    차이는 VAR과 발 사이의 그것과 매우 유사하지만, 당신을 마음 :

    모든 컬렉션은 반드시 가변 및 불변의 변종에 존재; 내가 지난번에 만 변경 가능한 우선 순위 큐를 지원했다.

  2. ==============================

    2.불변의 수단 불변는. 발은 초기화되고 나면 당신이 발에 값을 할당 할 수 없음을 의미 불변의 참조를합니다. 불변의 컬렉션은에 대한 참조 컬렉션 자체는 불변하지합니다. 당신은 불변의 모음을 수정할 때마다 다른 모음 대신에 적절한 원래의 콜렉션을 수정하는 생산된다. 대부분의 컬렉션은 모두 불변 변경 가능한 버전이 있지만, 물론 예외가 있습니다.

    불변의 수단 불변는. 발은 초기화되고 나면 당신이 발에 값을 할당 할 수 없음을 의미 불변의 참조를합니다. 불변의 컬렉션은에 대한 참조 컬렉션 자체는 불변하지합니다. 당신은 불변의 모음을 수정할 때마다 다른 모음 대신에 적절한 원래의 콜렉션을 수정하는 생산된다. 대부분의 컬렉션은 모두 불변 변경 가능한 버전이 있지만, 물론 예외가 있습니다.

  3. from https://stackoverflow.com/questions/8287425/mutable-vs-immutable-in-scala-collections by cc-by-sa and MIT license