Java データ構造
1. Java データ構造
データ構造とは、データを効率的に利用できるように保存・整理するための手法です。
配列(Array)はデータ構造の一種であり、単一の変数に複数の要素を格納することができます。Javaでは、java.utilパッケージの中に他にも多くのデータ構造が用意されており、それぞれ異なるデータ操作に適しています。
代表的なものとして、以下が挙げられます:
- ArrayList
- HashSet
- HashMap
ヒント: データ構造は「高機能な配列」のようなものです。配列よりも柔軟性が高く、豊富な機能を備えています。
これらについて詳しく掘り下げる前に、まずはそれぞれの概要について簡単に紹介します。
2. ArrayList
ArrayListは、必要に応じてサイズを変更できる「可変長配列」です。
要素を格納し、インデックス(添字)を使用してアクセスすることができます。
2.1 実装コード例
// ArrayListクラスをインポート
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<String> cars = new ArrayList<String>();
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("Mazda");
System.out.println(cars);
}
}3. HashSet
HashSetは、すべての要素がユニーク(一意)であるコレクションです。重複した要素を格納することはできません。
3.1 実装コード例
// HashSetクラスをインポート
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
HashSet<String> cars = new HashSet<String>();
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("BMW"); // 重複データ
cars.add("Mazda");
System.out.println(cars);
}
}注意: 上記の例では "BMW" を2回追加していますが、セット内のすべての要素は一意でなければならないため、出力結果には1回しか表示されません。
4. HashMap
HashMapは、キーと値のペア(key-value pairs)でデータを保存します。名前やIDなどの「キー」を使って特定の値を素早く検索したい場合に非常に便利です。
4.1 実装コード例
// HashMapクラスをインポート
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
// capitalCitiesという名前のHashMapオブジェクトを作成
HashMap<String, String> capitalCities = new HashMap<String, String>();
// キーと値(国, 都市)を追加
capitalCities.put("England", "London");
capitalCities.put("Germany", "Berlin");
capitalCities.put("Norway", "Oslo");
capitalCities.put("USA", "Washington DC");
System.out.println(capitalCities);
}
}5. データ構造の概要比較
| データ構造 | 保存内容 | 順序の保持 | 重複の許可 | 最適な用途 |
|---|---|---|---|---|
| ArrayList | 順序付けられた要素 | あり | あり | インデックスによる要素へのアクセス |
| HashSet | ユニークな要素 | なし | なし | 重複の回避、高速な存在チェック |
| HashMap | キーと値のペア | なし | あり(※キーは一意) | キーによる高速なデータ検索 |
6. イテレータ (Iterators)
データ構造を学習する際、よく耳にするのがイテレータ(Iterator)です。
イテレータは、データ構造内の要素を順番にループ処理するための仕組みです。英語の「Iterating」は技術用語で「反復処理(ループ処理)」を意味するため、このように呼ばれます。
6.1 ArrayListでイテレータを使用する例
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
// String型のArrayListを作成
ArrayList<String> cars = new ArrayList<String>();
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("Mazda");
// ArrayListのイテレータを取得
Iterator<String> it = cars.iterator();
// hasNext()とnext()を使用してリストを反復処理
while(it.hasNext()) {
System.out.println(it.next());
}
}
}