<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>第９講 Map on 2024年度 発展プログラミング演習（春学期）</title>
    <link>https://ksuap.github.io/2024spring/lesson09/index.html</link>
    <description>Recent content in 第９講 Map on 2024年度 発展プログラミング演習（春学期）</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <atom:link href="https://ksuap.github.io/2024spring/lesson09/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Map（連想配列）</title>
      <link>https://ksuap.github.io/2024spring/lesson09/map/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ksuap.github.io/2024spring/lesson09/map/index.html</guid>
      <description>Map（連想配列） Mapとは Mapの種類 Mapの宣言方法 Mapの操作 Mapにデータを追加する (put) Mapにあるデータを取得する (get) Mapにあるデータを削除する (remove) Mapのサイズを取得する (size) Mapの要素の繰り返し 典型的な方法（Iterator） 拡張 for 文を使った方法 サンプルプログラム 出力例 文字列を分割する 例題 1. お弁当の料金表 出力例 練習問題 まとめ Map とは 住所録を作成することを考えます．iPhone や Android の連絡先アプリを想像してください．
住所録のイメージ 住所録では，上記のように住所や電話番号など複数の情報が名前に紐付いています． このように，人の名前をキーとし，その人に関する情報をバリューとして紐付ける方法として，Mapというデータ構造 が利用できます．Mapでは，キーとバリューのペアの集合を扱います．
Java 以外の他の言語では，Mapを連想配列やディクショナリなどと呼びます． いずれもある実体に別の実体を関連づけるためのデータ構造です．
別の考え方をすると，Listはインデックスという数値に実体が対応付いていました．Mapは 実体に紐付けるインデックスに相当する部分が，数値以外の自由な値が指定できるものとも考えられできます．
Map の種類 先ほども述べたようにMapはキーとバリューのペアの集合を扱うデータ構造です． その実現方法に，ハッシュ値を利用する方法，木構造を利用する方法などがあります． それぞれの実現方法で，Mapを実現する型が存在します．HashMapとTreeMapの２つの型です． どちらを利用しても，利用方法や，処理結果に違いはありません． 以下の例では，HashMapを利用して説明していますが，HashMapをTreeMapに置き換えても 同じ説明が成り立ちますので，適宜読み替えてください．
なお，HashMapを使うときには，import文が 必要です．import java.util.HashMap;とクラス宣言の前に書きましょう．
Map の宣言方法 Map を使うには，Listと同じように，データ構造にどのような型の変数を格納するかを 宣言しなければいけません． 例えば，HashMapにString型をキーに Integer型をバリューとする場合，次のような宣言が必要です．
HashMap&amp;lt;String, Integer&amp;gt; map = new HashMap&amp;lt;String, Integer&amp;gt;();上記のように，HashMap&amp;lt;キーの型, バリューの型&amp;gt; という型として宣言しなければいけません． また，実体を作成するときも，new HashMap&amp;lt;キーの型, バリューの型&amp;gt;()のように作成しなければいけません． キーの型，バリューの型が異なれば，同じHashMap型であっても，異なる型であると判断されます．</description>
    </item>
    <item>
      <title>練習問題</title>
      <link>https://ksuap.github.io/2024spring/lesson09/assignments/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ksuap.github.io/2024spring/lesson09/assignments/index.html</guid>
      <description>Map（連想配列） 練習問題 1. CSV データの格納 ヒント ベースとなるプログラム ダブルクォートの削除 出力例 2. 電話帳の作成 出力例 まとめ 1. CSV データの格納 ここでは，郵便番号から住所の検索を行うプログラムを作成します．
郵便番号データを用意してください． 郵便番号データダウンロードページから自分の出身地の郵便番号データをダウンロードしてください． ダウンロードした zip ファイルを解凍してください． 解凍してできたファイルを zipcode.csv にファイル名を変更してください． ダウンロードしたファイルの文字コードは ShiftJIS になっています．utf-8 でなければ Java では文字化けを起こしますので，変換しておいてください． iconvコマンドがインストールされているなら，ターミナルで次のように入力しましょう． iconv -f CP932 -t utf-8 zipcode.csv &amp;gt; zipcode2.csv iconv --from-code=CP932 --to-code utf-8 zipcode.csv &amp;gt; zipcode2.csv でも良い． mv zipcode2.csv zipcode.csv 参考 各種エディタでも文字コードを変換できます． Emacs であれば，ファイルを開いて，Ctrl+x RET f と入力すると変換したい文字コードを聞かれますので，utf-8 と入力してください． VS Code でエンコーディングを変更、自動判別するには． Atom で Shift-JIS の CSV データを UTF-8 に変換する． 郵便番号を読み込み，検索を行うプログラムを作成してください． クラス名は ZipCodeとしてください． コマンドライン引数で与えられた郵便番号に対応する住所を出力してください． ヒント ベースとなるプログラム 例題 1.</description>
    </item>
    <item>
      <title>まとめ</title>
      <link>https://ksuap.github.io/2024spring/lesson09/summary/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ksuap.github.io/2024spring/lesson09/summary/index.html</guid>
      <description>Map（連想配列） Mapとは Mapの種類 Mapの宣言方法 Mapの操作 Mapにデータを追加する (put) Mapにあるデータを取得する (get) Mapにあるデータを削除する (remove) Mapのサイズを取得する (size) Mapの要素の繰り返し (Iterator) 典型的な方法（Iterator） 拡張 for 文を使った方法 サンプルプログラム 出力例 文字列を分割する 例題 1. お弁当の料金表 出力例 練習問題 1. CSV データの格納 ヒント ベースとなるプログラム ダブルクォートの削除 出力例 2. 電話帳の作成 出力例 まとめ まとめ Map Mapとは，キーとバリューのペアの集合を扱う型． Mapの種類 HashMap： 典型的な Map． TreeMap： キーの辞書順でペアを保持する Map． LinkedHashMap： 追加した順でペアを保持する Map． Mapの宣言方法 HashMap&amp;lt;キーの型, バリューの型&amp;gt; map = new HashMap&amp;lt;キーの型, バリューの型&amp;gt; Mapに格納するキーの型，バリューの型を指定しなければならない． HashMap&amp;lt;キーの型, バリューの型&amp;gt; map = new HashMap&amp;lt;&amp;gt; 後ろのキーの型，バリューの型は省略しても良い． Mapの操作 Mapへのデータの追加: map.</description>
    </item>
  </channel>
</rss>