목차
1. dart 에서 제공 하는 자료구조와 특징
컬렉션은 여러 값을 하나의 변수에 저장할 수 있는 타입을 의미한다.
List (리스트):
- 여러 값을 순서대로 저장하고, 인덱스 번호로 접근 가능한 컬렉션 타입.
Map (맵):
- '키'와 '값'의 형태로 저장하고,'키'를 기반으로 매칭되는 '값'을 바로 접근 가능한 컬렉션 타입.
Set (셋):
- 중복된 데이터를 제거하고 데이터를 저장하는 컬렉션 타입.
List 연습
// 코드의 진입점
void main() {
// List 자료구조 사용해보기
// 선언과 동시에 초기화
List<String> myList = ['홍길동', '포도', '사과'];
// R
print(' LIST DATA $myList');
// add 추가
myList.add('김유신');
// read : 리스트 계열은 인덱스 번호를 제공 즉, 인덱스 연산 가능
print(myList[1]);
// update
myList[1] = '신사임당';
print(myList[1]);
// delete , 2가지 방식 (키값으로 제거 가능, 인덱스 번호로 제거 가능)
myList.remove('신사임당');
myList.removeAt(0);
print(myList);
myList.remove('신사임당1111111');
//myList.removeAt(100); 오류 발생
print(myList.length); //인덱스 길이 는 = n - 1 = 0, 1
}
Map 연습
void main() {
// Map은 키/값 을 사용한다.
Map<String, int> myDict = {'홍길동' : 1, "포도" : 2, '사과': 3};
print(myDict.runtimeType);
// 맵에 새로운 키/값 추가 하는 방법
myDict['케이트'] = 4;
print(myDict['케이트']);
// 읽기
print(myDict['홍길동']);
print(myDict.keys);
print(myDict.values);
print(myDict.entries);
// 수정
myDict['홍길동'] = 100;
// 삭제
myDict.remove('홍길동');
print(myDict);
// map 에 특정 키/값이 있는지 확인 하는 방법
print(myDict.containsKey('홍길동'));
print(myDict.containsKey('케이트'));
// Map 을 다룰 때 다른 데이터 타입으로 변환해야 하는 경우 --> List
// 리스트로 변환 하기
var myDictKeys = myDict.keys;
var myDictValues = myDict.values;
print(' 데이터 타입 확인1 : ${myDictKeys.runtimeType}');
List<String> myDictKeyList = myDictKeys.toList();
print(' 데이터 타입 확인2 : ${myDictKeyList.runtimeType}');
//List<String> myDictKeyList = myDict.keys.toList();
// 기존에 존해하는 map 다른 map 데이터를 일과 추가 해야 된다면
Map<String, int> myDict2 = {'한국': 1, '일본': 2};
myDict.addAll(myDict2);
print('---------------------');
print(myDict);
}
Set 연습
void main() {
// List -> [], Map -> {}, , Set -> {}
Set<String> data = {'a', 'b', 'c', 'a'};
print(data);
data.add('d');
data.remove('a');
print(data);
// 전체 비우기
data.clear();
print(data);
}
2. 문제
List 자료구조 문제:
문제: 리스트에서 최댓값 찾기
주어진 리스트에서 최댓값을 찾는 함수를 작성하세요.
입력
● 정수로 이루어진 리스트
출력
● 리스트에서 최댓값
입력: [3, 7, 2, 10, 5]
출력: 10
Map 자료구조 문제:
문제: 학생 성적 평균 계산하기
주어진 학생들의 성적을 담은 맵에서 성적의 평균을 계산하세요.
입력
● 학생 이름을 키로, 성적을 값으로 가지는 맵
출력
● 학생들의 성적 평균
입력: {'철수': 85, '영희': 90, '민수': 70}
출력: 81.66666666666667
문제: 중복 단어 제거하기
문자열로 이루어진 리스트에서 중복된 단어를 제거하세요.
입력
● 문자열로 이루어진 리스트
출력
● 중복이 제거된 리스트
입력: ['apple', 'banana', 'apple', 'grape', 'banana', 'orange']
출력: ['apple', 'banana', 'grape', 'orange']
void main() {
List<int> numbers = [3, 7, 2, 10, 5];
numbers.sort();
print(numbers[numbers.length - 1]);
Map<String, int> myDict = {'철수': 85, '영희': 90, '민수': 70};
List<int> score = myDict.values.toList();
double sum = 0;
for (int i in score){
sum += i;
}
double avg = sum / score.length;
print(avg);
List<String> names = ['apple', 'banana', 'apple', 'grape', 'banana', 'orange'];
Set<String> names2 = {};
for (String name in names){
names2.add(name);
}
print(names2.toList());
}
'Flutter > 기초' 카테고리의 다른 글
dart Null Safety (0) | 2024.09.06 |
---|---|
프로젝트 구조 살펴보기 (0) | 2024.09.04 |
변수 (3) | 2024.09.03 |