Main Content

키 인덱스를 사용하여 읽기와 쓰기

Map에서 읽을 때는 미리 정의해 놓은 동일한 키와 해당 키와 연결된 특정 값을 사용합니다. 새 요소를 Map에 쓰려면 각 요소에 대해 키와 함께 저장할 값을 제공해야 합니다.

참고

대규모 Map의 경우, 키 메서드와 값 메서드는 출력값으로 셀형 배열을 생성하므로 많은 메모리를 사용합니다.

Map에서 읽기

Map을 생성하여 값을 채우고 나면 이 Map을 사용하여 데이터를 저장하고 불러올 수 있습니다. Map은 배열과 동일한 방식으로 사용하면 되며, 다만 정수형 외 인덱스도 사용할 수 있다는 점만 다릅니다. 특정 키(keyN)에 대한 값(valueN)을 조회하기 위한 일반적인 구문이 여기에 나와 있습니다. 키가 문자형 벡터인 경우 작은따옴표로 묶어야 합니다.

valueN = mapObj(keyN);

먼저 Map ticketMap으로 시작합니다.

ticketMap = containers.Map(...
    {'2R175', 'B7398', 'A479GY', 'NZ1452'}, ...
    {'James Enright', 'Carl Haynes', 'Sarah Latham', ...
     'Bradley Reid'});

적절한 키로 Map의 요소를 참조하여 단일 값을 찾을 수 있습니다.

passenger = ticketMap('2R175')

passenger =

James Enright

항공권 A479GY를 소지한 사람을 찾습니다.

sprintf('   Would passenger %s please come to the desk?\n', ...
    ticketMap('A479GY'))

ans =

   Would passenger Sarah Latham please come to the desk?

여러 키에 대한 값에 액세스하려면 셀형 배열에 키를 지정하여 values 메서드를 사용하십시오.

values(ticketMap, {'2R175', 'B7398'})

ans = 

    'James Enright'    'Carl Haynes'

Map 컨테이너는 스칼라 인덱싱만 지원합니다. 다른 MATLAB® 클래스에서는 콜론 연산자를 사용하여 범위에 액세스할 수 있으나, 키 범위 지정에는 콜론 연산자를 사용할 수 없습니다. 예를 들어, 다음 명령문은 오류를 발생시킵니다.

ticketMap('2R175':'B7398')
ticketMap(:)

키/값 쌍 추가하기

다른 배열 유형과 달리, Map에 포함된 각 요소는 값과 해당 값의 키로 구성됩니다. Map에 새 값을 쓸 때는 해당 키도 제공해야 합니다. 이 키는 Map에 포함된 다른 키와 유형이 일치해야 합니다.

다음 구문을 사용하여 Map에 추가 요소를 삽입합니다.

existingMapObj(newKeyName) = newValue;

먼저 Map ticketMap으로 시작합니다.

ticketMap = containers.Map(...
    {'2R175', 'B7398', 'A479GY', 'NZ1452'}, ...
    {'James Enright', 'Carl Haynes', 'Sarah Latham', ...
     'Bradley Reid'});

ticketMap Map에 두 요소를 추가합니다. 이제 ticketMap에 6개 키/값 쌍이 있는지 확인합니다.

ticketMap('947F4') = 'Susan Spera';
ticketMap('417R93') = 'Patricia Hughes';

ticketMap.Count

ans =

                    6

ticketMap에 포함된 키와 값을 모두 나열합니다.

keys(ticketMap),  values(ticketMap)

ans = 

    '2R175'    '417R93'    '947F4'    'A479GY'    'B7398'    'NZ1452'


ans = 

    'James Enright'    'Patricia Hughes'    'Susan Spera'    'Sarah Latham'    'Carl Haynes'    'Bradley Reid'

결합 방식으로 Map 작성하기

결합을 사용하여 그룹으로 키/값 쌍을 Map에 추가할 수 있습니다. Map 객체의 결합은 다른 클래스와 다릅니다. 여러 Map 객체로 구성된 벡터를 생성하는 대신, MATLAB은 Map 객체를 구성하는 각 키/값 쌍을 포함하는 단일 Map을 반환합니다.

Map 객체의 결합에 대한 규칙은 다음과 같습니다.

  • Map 객체로 구성된 세로 벡터만 허용됩니다. Map 객체로 구성된 m×n 배열 또는 가로 벡터는 생성할 수 없습니다. 이러한 이유로, vertcat은 Map 객체에 대해 지원되지만 horzcat은 지원되지 않습니다.

  • 결합되는 각 Map에 포함된 모든 키는 동일한 클래스여야 합니다.

  • 다른 개수의 키/값 쌍으로 구성된 Map을 결합할 수 있습니다. 그 결과로 해당 Map 객체 각각의 키/값 쌍을 포함하는 단일 Map 객체가 생성됩니다.

    tMap1 = containers.Map({'2R175', 'B7398', 'A479GY'}, ...
        {'James Enright', 'Carl Haynes', 'Sarah Latham'});
    
    tMap2 = containers.Map({'417R93', 'NZ1452', '947F4'}, ...
        {'Patricia Hughes', 'Bradley Reid', 'Susan Spera'});
    
    % Concatenate the two maps:
    ticketMap = [tMap1; tMap2];
    

    이 결합으로 생성된 결과는 이전 섹션에서 생성한 것과 동일하게 요소를 6개 가진 Map입니다.

    ticketMap.Count
    
    ans =
    
                        6
    
    keys(ticketMap),  values(ticketMap)
    
    ans = 
    
        '2R175'    '417R93'    '947F4'    'A479GY'    'B7398'    'NZ1452'
    
    
    ans = 
    
        'James Enright'    'Patricia Hughes'    'Susan Spera'    'Sarah Latham'    'Carl Haynes'    'Bradley Reid'
  • 결합 결과로 생성되는 Map 객체에는 중복된 키나 해당 키 값이 포함되지 않습니다.

    다음 예제에서, 두 개의 객체 m1m2는 키로 8을 사용합니다. Map m1에서 8은 값 C에 대한 키이며, m2에서는 값 X에 대한 키입니다.

    m1 = containers.Map({1, 5, 8}, {'A', 'B', 'C'});
    m2 = containers.Map({8, 9, 6}, {'X', 'Y', 'Z'});
    

    m1m2를 결합하여 새 Map 객체 m을 생성합니다.

    m = [m1; m2];

    결과로 생성되는 Map 객체 m은 5개의 키/값 쌍만 포함합니다. 값 C는 해당 키가 고유하지 않으므로 결합에서 삭제되었습니다.

    keys(m), values(m)
    
    ans = 
    
        [1]    [5]    [6]    [8]    [9]
    
    
    ans = 
    
        'A'    'B'    'Z'    'X'    'Y'

참고 항목

| | |

관련 항목