간단하게 말하자면, Scala 집합

다른 일부 언어에 비해 Scala 언어는 대상과 함수식 프로그래밍 범례를 대상으로 하는 혼합체로 매우 독특한 집합 구조를 가지고 있다.비록 자바와 JVM 세계에서 많은 것을 계승했지만 Scala는 더욱 사용하기 쉬운 API를 가지고 전체적으로 더욱 완벽하다.
본고에서, 나는 당신에게 일련의 Scala 집합을 보여 드리겠습니다. 코드 예시에서 어떻게 사용하는지, 그리고 어디에서 사용하는지 보여 드리겠습니다.즐기다

Scala 컬렉션 패키지


우선 모든 Scala 컬렉션이 포함된 패키지를 살펴보겠습니다.원하는 대로 최고급 패키지가 호출됩니다 - collection.더 재미있는 것은 가방이 포함되어 있다는 것이다.전형적인 집합을 포함하는 더욱 전문적인 버전으로 특정한 용례에 따라 맞춤형 제작을 한다.
병렬 처리, 병렬 접근이 필요하든, 일반적인 키 기반 검색만 원하든, 정확한 패키지를 가져오면 됩니다!
다음 표에는 collections 하위 패키지의 이름과 찾을 수 있는 내용에 대한 간략한 설명이 나와 있습니다.
패키지 이름
묘사collectionScala의collectionslibrary를 사용하고 확장하는 데 필요한 기본 특징과 대상을 정의합니다. 하위 패키지의 모든 정의를 포함합니다.당신이 처리할 대부분의 추상은 여기에 정의되어 있습니다.collection.concurrent매핑 피쳐와 TrieMap 클래스를 정의하려면 원자적이고 잠금 없는 액세스 작업을 사용합니다.collection.convertJava 컬렉션 사용 추상적 패키지 Scala 컬렉션 및 Scala 컬렉션 사용 추상적 패키지 Java 컬렉션 유형 정의collection.generic특정 가변, 불가변 등 집합을 구축하는 데 사용할 재사용 가능한 구성 요소를 정의합니다.collection.immutable변경할 수 없는 집합을 정의합니다. 즉, 가장 자주 사용할 집합입니다.collection.mutable가변 컬렉션을 정의합니다.대부분의 특정한 집합 유형은 가변적이고 불가변적인 형식으로 제공할 수 있지만, 전부는 아니다.collection.parallel특정한 가변 및 가변 집합을 구축하는 데 사용할 재사용 가능한 구성 요소를 정의합니다. 이 집합들은 처리를 병렬 라인에 분배합니다collection.parallel.immutable병렬적이고 변경할 수 없는 집합을 정의합니다.collection.parallel.mutable병렬 소프트 컬렉션을 정의합니다.collections.script수집 작업을 관찰하는 데 사용되는 버려진 도구 모음입니다.
자료 출처: Programming Scala, 2nd Edition
보시다시피 선택의 범위는 매우 광범위합니다.한편, 어떤 용례에도 적합한 집합이 있으면 항상 좋다.다른 한편, 만약에 단순Map을 실현하고 싶다면, 시작하기가 매우 어렵다.
본 게시물에서 가장 광범위하게 사용되는 소장품에 중점을 두겠습니다 - immutable

모으다변하지 않았어


불변 컬렉션 패키지는 모든 Scala 컬렉션에서 가장 유행합니다.사실상, 기본적으로 이 가방은 범위에 포함되어 있기 때문에, 가져오지 않아도 사용할 수 있습니다.
이 소프트웨어 패키지는 많은 특성과 일부 데이터 구조의 구체적인 실현을 포함한다.다음 그림에서는 이러한 피쳐(파란색은 피쳐, 검은색은 카테고리)를 보여 줍니다.
출처: Scala Docs
이제 우리는 그것을 한쪽에 놓고 실제 학습에 기본적인 집합을 사용합시다.다음 각 절은 광범위하게 사용되는 실현을 한 번에 하나씩 중점적으로 소개한다.

설치


목록의 첫 번째는 Set 입니다.이것은 집합으로 중복 요소를 포함하지 않습니다.만약 집합에 유일한 원소만 있다면, 이 원소를 선택해야 한다.Set는 다음과 같이 생성됩니다.
//문자 유형 세트
val set:set[Char]=집합('a', b', c')
//아니면 그냥 빈집
val setOfInt:Set[Int]=Set()Set 조작의 흥미로운 점은 apply 방법에 있다.apply 방법의 동작은 contains 방법과 유사합니다. - 둘 다 주어진 요소가 포함되어 있는지 확인합니다.
val set:set[Int]=집합(1,2,5,6,9)
설치포함 (2)/true
set(2)//와 같이true로 돌아가기
ASet는 광범위한 조작을 제공하여 완전한 참고를 찾을 수 있다here.
어디에서 사용합니까Set?
  • 반복하지 않음
  • 요소 존재 여부를 신속하게 확인해야 함
  • 패스 불필요
  • 설치


    AMap는 키 값이 맞는 집합입니다.모든 키는 상응하는 값을 가지고 있다.찾기 시간을 제공하기 위해 키는 고유해야 합니다.그러나 값이 유일할 필요는 없다.작성 방법 Map:
    //Int - 문자열 매핑에 대한 매핑
    val-map:map[Int, String]=매핑(1->"one", 2->"two", 3->"three")
    //또는 빈 지도 한 장
    val emptyMap:Map[String,String]=Map()O(1) 의 요소는 Map 문법으로 만들어졌지만, 원한다면 Map 을 사용할 수도 있습니다.key -> value의 흥미로운 점은 우리가 어떻게 키를 사용하여 값을 얻는가에 있다.값을 가져오는 기본 방법은 (key, value) 방법입니다.단, 이 방법은 Map 이 아니라 get(key) 로 돌아갑니다.이것은 키가 존재하지 않는 상황에 적응하기 위한 것이지 이상이 아니라 하나로 되돌아오기 위한 것이다Option[T].직접 값을 얻는 것을 더 좋아한다면, apply 방법은 이 값을 제공할 것입니다. (찾지 못하면 예외입니다.)그 외관을 살펴보자.
    val-map:map[Char,Int]=map('I'->1,'V'->5,'X'->10)
    지도.get('I')//반환 옵션[Int]
    지도.get('D')//복귀 옵션[None]
    map('V')//반환 5
    map('C')//예외 발생
    AT는 광범위한 조작을 제공하여 완전한 참고를 찾을 수 있다here.
    너는 나의 blog post 중에서 Option[None]에 대한 더 많은 정보를 알 수 있다.
    어디에서 사용합니까Map?
  • 키 값 저장소 필요
  • O (1) 검색 및 검색 필요
  • 순서가 중요하지 않음
  • 열쇠 중복 필요 없음
  • 옵션

    Map는 색인적이고 질서정연하며 두루 다닐 수 있는 서열이다.비록 복잡하게 들리지만 빠른 랜덤 선택과 빠른 랜덤 함수 업데이트 사이의 좋은 균형 때문에 이것은 매우 유행하는 통용 데이터 구조이다.실천 과정에서 어떻게 사용하는지 살펴보자.
    //정수 벡터
    val vector:vector[Int]= 벡터(1,2,3,5,7,11)
    //또는 빈 벡터
    val emptyVector: Vector[String]= 벡터()VectorVector 방법은 간단하게 원소를 얻고 벡터에서 사용하고 인덱스합니다.이 데이터 구조에서 인덱스는 0과 벡터 길이 사이여야 합니다. 그렇지 않으면 내보내기apply:
    val vector:vector[String]=벡터("1", "2", "3")
    벡터 (0)//반환 "one"
    벡터 (3)//이상
    AVector는 광범위한 조작을 제공하여 완전한 참고를 찾을 수 있다here.
    어디에서 사용합니까IndexOutOfBoundsException?
  • 빠른 랜덤 액세스 및 업데이트 필요
  • 빠른 추가/선행/후면 작업
  • 필요
  • 반드시 반복할 수 있어야 한다
  • 주문 사항
  • 벡터


    마지막 집합이 가장 간단하기 때문에 간단한 용례에서 인기가 많다-Vector.이 집합은 체인 테이블로 실현되어 질서정연한 집합을 나타낸다.사용법 List:
    //문자열 목록
    val list:list[String]= 목록("파란색", "빨간색", "노란색")
    //빈 목록
    val emptyList:List[Int]=List()
    위에서 말한 바와 같이 aList는 체인 테이블로 실현되었다.이것은 선행자 List 와 빈 목록을 나타내는 Nil 을 사용하여 목록을 만들 수 있음을 의미합니다.다음과 같이 할 수 있습니다.
    //위의 예와 동일
    val list:list[String]=“blue”:(“red”::(“yellow”::Nil))
    //및 빈 목록
    val emptyList= 0
    AList는 광범위한 조작을 제공하여 완전한 참고를 찾을 수 있다here.
    어디에서 사용합니까::?
  • 통과해야 함
  • O (1) 헤드 컴포넌트 사전 처리 및 읽기 필요
  • O(n) 추가 및 내부 요소 읽기 허용
  • 무작위 액세스 불필요
  • 총결산


    나는 네가 이 문장이 매우 유용하다는 것을 발견하길 바란다.그렇다면 주저하지 않고 이 글을 좋아하거나 공유하세요.그 밖에 네가 원한다면 나의 소셜 미디어에서 나를 주목할 수 있다🙂

    좋은 웹페이지 즐겨찾기