
โ . ์๋ก : ์ปฌ๋ ์ (Collection) ํ์ ์ด ์ค์ํ ์ด์
๐ 1. ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ์ ํ์์ฑ
๐ 2. Dart์์ ์ ๊ณตํ๋ ์ฃผ์ ์ปฌ๋ ์ ํ์
โ ก. ๋ณธ๋ก : List, Set, Map ์ปฌ๋ ์ ๊ฐ๋ ๊ณผ ํ์ฉ๋ฒ
๐ Step 1: List (๋ฐฐ์ด) ๊ฐ๋ ๋ฐ ์ฃผ์ ๋ฉ์๋ ํ์ฉ
๐ Step 2: Set (์ค๋ณต ์๋ ์งํฉ) ๊ฐ๋ ๋ฐ ํ์ฉ
๐ Step 3: Map (ํค-๊ฐ ์) ๊ฐ๋ ๋ฐ ํ์ฉ
๐ Step 4: ์ปฌ๋ ์ ์ ๋ณํ ๋ฐ ๋ณํ (List ↔ Set ↔ Map ๋ณํ)
โ ข. ์ปฌ๋ ์ ํ์ ์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ
๐ ์ปฌ๋ ์ ์ ํ ๊ธฐ์ค
๐ ์ฑ๋ฅ์ ๊ณ ๋ คํ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์
Dart์
๋ฆฌ์คํธ(List), Set, Map
์ปฌ๋ ์ ๊ฐ๋ ์ ๋ฆฌ ๐๐
Dart์์๋ ๋ฐ์ดํฐ๋ฅผ
ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํด
List, Set, Map๊ณผ ๊ฐ์
์ปฌ๋ ์ (Collection) ํ์ ์ ์ ๊ณตํฉ๋๋ค.
์ด๋ค์
๋ฐฐ์ด, ์งํฉ, ํค-๊ฐ ๊ตฌ์กฐ๋ฅผ
ํํํ ๋ ์ฌ์ฉ๋๋ฉฐ,
Flutter UI ๋ฐ ์ํ ๊ด๋ฆฌ์์
์ค์ํ ์ญํ ์ ํฉ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋
Dart์ List, Set, Map์ ๊ฐ๋ ๊ณผ ํ์ฉ๋ฒ์
์์ ์ ํจ๊ป ์ ๋ฆฌํ๊ฒ ์ต๋๋ค. ๐
๋จผ์
๋ ๋ง์ ์ ๋ณด, ํน์
์์๋๋ก ํฌ์คํ
์ ๋ณด๊ณ ์ถ๋ค๋ฉด
์๋ ๋
ธ์
์ ํ์ธํด์ฃผ์ธ์.

https://mongmung-i.notion.site/Flutter-1a39b1e2cdaa80319a0fc2a89281dc71?pvs=4
Flutter ์ดํ ๊ฐ๋ฐ ์ผ์ง | Notion
Made with Notion, the all-in-one connected workspace with publishing capabilities.
mongmung-i.notion.site
https://mongmung-i.notion.site/19f9b1e2cdaa80a984ade6141a87fd29?pvs=4
์ฐฝ์ ํธ๋ ์ฌ์ ์บ ํ ๐ฒ | Notion
์ด ๊ณณ์ ์ฐฝ์ ํธ๋ ์ฌ์ ์บ ํ ์งํ ์ฌํญ์ ์ ๋ฆฌํ๋ ๊ณณ์ ๋๋ค.
mongmung-i.notion.site
โ . ์๋ก : ์ปฌ๋ ์ (Collection) ํ์ ์ด ์ค์ํ ์ด์ ๐ค
๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ์ ํ์์ฑ
โ
๋ฐฐ์ด(List), ์งํฉ(Set), ํค-๊ฐ ๊ตฌ์กฐ(Map) ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ธฐ๋ณธ ๋ฐฉ์
โ
Flutter UI์์ ๋ฆฌ์คํธ๋ทฐ, ๋๋กญ๋ค์ด, ํํฐ๋ง ๋ฑ์ ์ฌ์ฉ๋จ
โ
๋คํธ์ํฌ ์์ฒญ(JSON ๋ฐ์ดํฐ) ๋ฐ ์ํ ๊ด๋ฆฌ(State Management)์์ ํ์์
โก ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ฏ๋ก ์ปฌ๋ ์ ๊ฐ๋ ์ ์ ํํ ์ดํดํด์ผ ํจ! ๐
Dart์์ ์ ๊ณตํ๋ ์ฃผ์ ์ปฌ๋ ์ ํ์
โ
List → ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉ (์์ ์ ์ง, ์ค๋ณต ํ์ฉ)
โ
Set → ์ค๋ณต์ ํ์ฉํ์ง ์๋ ์งํฉ (์์ ๋ณด์ฅ X)
โ
Map → ํค-๊ฐ(Key-Value) ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ์ ์ฅ (๋์
๋๋ฆฌ ๊ฐ๋
)
โก ์ด์ ๊ฐ ์ปฌ๋ ์ ํ์ ์ ํ๋์ฉ ์ดํด๋ณด๊ฒ ์ต๋๋ค! ๐ฏ
โ ก. ๋ณธ๋ก : List, Set, Map ์ปฌ๋ ์ ๊ฐ๋ ๊ณผ ํ์ฉ๋ฒ ๐๏ธ
Step 1: List (๋ฐฐ์ด) ๊ฐ๋ ๋ฐ ์ฃผ์ ๋ฉ์๋ ํ์ฉ
List๋ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ
์์๋๋ก ์ ์ฅํ๋ ์ปฌ๋ ์ ํ์ ์ ๋๋ค.
๋ฐฐ์ด๊ณผ ์ ์ฌํ๋ฉฐ,
์ค๋ณต๋ ๊ฐ์ ํ์ฉํ๊ณ
๊ฐ ์์์ ์ ๊ทผํ ๋
์ธ๋ฑ์ค(0๋ถํฐ ์์)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์์๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ ํฉํฉ๋๋ค.
- ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ ์ ์์ผ๋ฉฐ, ํ์ํ ๋ ํน์ ๊ฐ์ ์ญ์ ํ๊ฑฐ๋ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ๋ฐฐ์ด์ฒ๋ผ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ์ ๊ทผํ ์ ์์ต๋๋ค.
โ List๋?
- ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์์๋๋ก ์ ์ฅํ๋ ๋ฐฐ์ด ํํ์ ์ปฌ๋ ์
- ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ๊ทผ ๊ฐ๋ฅ (0๋ถํฐ ์์)
- ์ค๋ณต ๊ฐ์ ํ์ฉํจ
void main() {
List<String> fruits = ['Apple', 'Banana', 'Cherry'];
print(fruits[0]); // Apple
print(fruits.length); // 3
}
โ List ์ฃผ์ ๋ฉ์๋
void main() {
List<int> numbers = [1, 2, 3];
numbers.add(4); // ๋ฆฌ์คํธ์ ๊ฐ ์ถ๊ฐ
numbers.remove(2); // ํน์ ๊ฐ ์ญ์
numbers.insert(1, 10); // ํน์ ์์น์ ๊ฐ ์ฝ์
print(numbers); // [1, 10, 3, 4]
}
โ ๋ฐ๋ณต๋ฌธ์ ํ์ฉํ List ์ํ
void main() {
List<String> names = ['Alice', 'Bob', 'Charlie'];
for (var name in names) {
print(name);
}
}
๐ก ํ์ฉ ์์:
- Flutter UI์์ ๋ฆฌ์คํธ๋ทฐ(ListView)๋ฅผ ๊ตฌ์ฑํ ๋
- ์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ์ ์ฅํ ๋ (์: ์ต๊ทผ ๊ฒ์์ด ๋ชฉ๋ก, ์ฑํ ๋ฉ์์ง ๋ฆฌ์คํธ)
- ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ํน์ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ ๋
Step 2: Set (์ค๋ณต ์๋ ์งํฉ) ๊ฐ๋ ๋ฐ ํ์ฉ ๋ณด์ ์ค๋ช
โ Set์ด๋?
Set์ ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ
ํ์ฉํ์ง ์๋ ์ปฌ๋ ์ ํ์ ์ ๋๋ค.
๋ฆฌ์คํธ์ ๋น์ทํ์ง๋ง
์ค๋ณต์ ์๋์ผ๋ก ์ ๊ฑฐํ๋ฉฐ,
๋ฐ์ดํฐ์ ์์๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค.
void main() {
Set<int> uniqueNumbers = {1, 2, 3, 3, 4, 5};
print(uniqueNumbers); // {1, 2, 3, 4, 5} (์ค๋ณต ์ ๊ฑฐ)
}
- ์ค๋ณต ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ฉด ์๋์ผ๋ก ์ ๊ฑฐ๋๋ฏ๋ก ๋ฐ์ดํฐ ์ ๋ฆฌ๊ฐ ํ์ํ ๋ ์ ์ฉํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ๊ฑฐ๋ ์ค๋ณต ์ฒดํฌ๊ฐ ํ์ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
๐ก ํ์ฉ ์์:
- ํ์๊ฐ์ ์ ์ค๋ณต๋ ์ด๋ฉ์ผ์ ๋ฐฉ์งํ ๋ (Set์ ์ฌ์ฉํ์ฌ ์ค๋ณต ์ฒดํฌ)
- ๊ฒ์ํ ํ๊ทธ ์์คํ ์์ ์ค๋ณต๋ ํ๊ทธ๋ฅผ ํ์ฉํ์ง ์์ ๋
- ๋๋คํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ค๋ณต ์์ด ์ ํํ ๋
Step 3: Map (ํค-๊ฐ ์) ๊ฐ๋ ๋ฐ ํ์ฉ ๋ณด์ ์ค๋ช
Map์ Key-Value(ํค-๊ฐ) ํํ๋ก
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ปฌ๋ ์ ํ์ ์ ๋๋ค.
๋ฆฌ์คํธ์ ๋ค๋ฅด๊ฒ
๊ณ ์ ํ ํค(Key)๋ฅผ ์ฌ์ฉํ์ฌ
ํน์ ๊ฐ์ ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์์ต๋๋ค.
void main() {
Map<String, int> scores = {'Alice': 85, 'Bob': 90};
print(scores['Alice']); // 85
}
- ๋ฆฌ์คํธ์ ๋ฌ๋ฆฌ ํน์ ์์์ ์ ๊ทผํ ๋ ์ธ๋ฑ์ค๊ฐ ์๋ ํค(Key)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Key๋ ์ค๋ณต๋ ์ ์์ง๋ง, Value๋ ์ค๋ณต๋ ์ ์์ต๋๋ค.
- ๋น ๋ฅธ ๋ฐ์ดํฐ ๊ฒ์์ด ํ์ํ ๋ ํ์ฉ๋ฉ๋๋ค.
๐ก ํ์ฉ ์์:
- ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ (user['name'], user['email'])
- JSON ๋ฐ์ดํฐ ์ฒ๋ฆฌ (์๋ฒ์์ ์๋ต์ ๋ฐ์ ๋ Map ํํ๋ก ๋ฐํ๋จ)
- Flutter์ ์ํ ๊ด๋ฆฌ์์ ํน์ ๊ฐ์ ์ ์ฅํ๊ณ ๋น ๋ฅด๊ฒ ๊ฐ์ ธ์ฌ ๋
Step 4: ์ปฌ๋ ์ ์ ๋ณํ ๋ฐ ๋ณํ (List ↔ Set ↔ Map ๋ณํ) ๋ณด์ ์ค๋ช
์ปฌ๋ ์ ํ์ ๊ฐ ๋ณํ์ ํตํด
๋ฐ์ดํฐ๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ด๋ค ์์
์ ์ํํด์ผ ํ๋์ง์ ๋ฐ๋ผ
List, Set, Map์ ์ ๋์ ์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค.
โ List → Set ๋ณํ (์ค๋ณต ์ ๊ฑฐ)
๋ฆฌ์คํธ์ ์๋
์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ์ ๋
Set์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค.
void main() {
List<int> numbers = [1, 2, 2, 3, 4, 4, 5];
Set<int> uniqueNumbers = numbers.toSet();
print(uniqueNumbers); // {1, 2, 3, 4, 5}
}
๐ก ํ์ฉ ์์:
- ์ค๋ณต๋ ํ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ ๋ฆฌํ ๋
- ํ ๋ฒ๋ง ์คํํด์ผ ํ๋ ๊ณ ์ ํ ๊ฐ ๋ชฉ๋ก์ ์ ์งํ ๋
โ Set → List ๋ณํ (์์ ์ ์ง ํ์ ์)
Set์ ์์๊ฐ ๋ณด์ฅ๋์ง ์๊ธฐ ๋๋ฌธ์,
๋ค์ ์์๋ฅผ ์ ์งํ๋ ค๋ฉด List๋ก ๋ณํํด์ผ ํฉ๋๋ค.
void main() {
Set<String> uniqueNames = {'Alice', 'Bob', 'Charlie'};
List<String> nameList = uniqueNames.toList();
print(nameList); // ['Alice', 'Bob', 'Charlie']
}
๐ก ํ์ฉ ์์:
- ์ ๋ ฌ์ด ํ์ํ ๋ฐ์ดํฐ (์: ๊ฐ๋๋ค์, ๋ ์ง์ ์ ๋ ฌ)
- Set์ ์ ์ฅ๋ ๊ฐ๋ค์ UI์์ ์์๋๋ก ๋ณด์ฌ์ฃผ๊ณ ์ถ์ ๋
โ List → Map ๋ณํ
๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฅผ ํค-๊ฐ ํํ๋ก ๋ณํํ์ฌ
๋ณด๋ค ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
void main() {
List<String> fruits = ['Apple', 'Banana', 'Cherry'];
Map<int, String> fruitMap = {for (int i = 0; i < fruits.length; i++) i: fruits[i]};
print(fruitMap); // {0: Apple, 1: Banana, 2: Cherry}
}
๐ก ํ์ฉ ์์:
- ์ํ ๋ฆฌ์คํธ์์ ๊ณ ์ ํ ID๋ฅผ ํค๋ก ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ์กฐํํ ๋
- ๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฅผ Key-Value ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝํ์ฌ JSON ๋ฐ์ดํฐ์ ์ฐ๋ํ ๋
โ ข. ์ปฌ๋ ์ ํ์ ์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ โ
์ปฌ๋ ์ ์ ํ ๊ธฐ์ค
โ
์์๊ฐ ์ค์ํ๊ณ ์ค๋ณต์ ํ์ฉํด์ผ ํ๋ค๋ฉด → List
โ
์ค๋ณต์ ๋ฐฉ์งํ๊ณ ๋น ๋ฅธ ๊ฒ์์ด ํ์ํ๋ค๋ฉด → Set
โ
ํค-๊ฐ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํด์ผ ํ๋ค๋ฉด → Map
์ฑ๋ฅ์ ๊ณ ๋ คํ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์
โ
๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋๋ Set์ ํ์ฉํ์ฌ ์ค๋ณต์ ์๋ ์ ๊ฑฐ
โ
๋น ๋ฅธ ๊ฒ์์ด ํ์ํ ๊ฒฝ์ฐ Map์ ํ์ฉํ์ฌ Key ๊ธฐ๋ฐ ์กฐํ
โ
Flutter UI์์ ๋ฆฌ์คํธ๋ทฐ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ List๊ฐ ์ ํฉ
โก ์ปฌ๋ ์ ํ์ ์ ์ ์ ํ ํ์ฉํ๋ฉด ์ฑ๋ฅ๊ณผ ๊ฐ๋ ์ฑ์ ๋์์ ํฅ์ ๊ฐ๋ฅ! ๐