이 페이지의 내용은 이전 릴리스에 관한 것입니다. 해당 영문 페이지는 최신 릴리스에서 제거되었습니다.
키 인덱스를 사용하여 읽기와 쓰기
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 객체에는 중복된 키나 해당 키 값이 포함되지 않습니다.
다음 예제에서, 두 개의 객체
m1
및m2
는 키로8
을 사용합니다. Mapm1
에서8
은 값C
에 대한 키이며,m2
에서는 값X
에 대한 키입니다.m1 = containers.Map({1, 5, 8}, {'A', 'B', 'C'}); m2 = containers.Map({8, 9, 6}, {'X', 'Y', 'Z'});
m1
과m2
를 결합하여 새 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'
참고 항목
keys
| isKey
| values
| containers.Map