Javaのコレクションフレームワークは、データを効率的に管理、保存、および操作するためのツール群です。コレクションは、複数のオブジェクトを一つの単位として管理するために使用されるインターフェースやクラスの集合で、データを格納・取り出し・操作するためのさまざまな手法を提供します。ここでは代表的な List
、Set
、および Map
を紹介します。
List
は順序を持つ要素のコレクションで、同一の要素を複数回格納することができます。一般的な実装クラスには ArrayList
と LinkedList
があります。
import java.util.ArrayList;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
for (String name : names) {
System.out.println(name);
}
}
}
add(E e)
: リストに要素を追加get(int index)
: 指定したインデックスの要素を取得remove(int index)
: 指定したインデックスの要素を削除size()
: リストの要素数を取得Set
は重複を許さないコレクションで、順序が保証されない場合が多いです。主な実装クラスには HashSet
と TreeSet
があります。
import java.util.HashSet;
import java.util.Set;
public class SetExample {
public static void main(String[] args) {
Set<String> uniqueNames = new HashSet<>();
uniqueNames.add("Alice");
uniqueNames.add("Bob");
uniqueNames.add("Alice"); // 重複要素は追加されない
for (String name : uniqueNames) {
System.out.println(name);
}
}
}
add(E e)
: セットに要素を追加contains(Object o)
: セットに指定した要素が含まれているか確認remove(Object o)
: セットから指定した要素を削除size()
: セットの要素数を取得Map
はキーと値のペアでデータを管理し、キーは重複を許さず、一意の値に関連付けられます。主な実装クラスには HashMap
と TreeMap
があります。
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 25);
ages.put("Bob", 30);
System.out.println("Alice's age: " + ages.get("Alice"));
}
}
put(K key, V value)
: キーと値をマップに追加get(Object key)
: 指定したキーに関連する値を取得remove(Object key)
: 指定したキーのペアを削除size()
: マップの要素数を取得Javaでは、ファイルの読み書きやシリアライズを行うための多様な入出力ストリームが用意されています。
ファイル操作の基本は、FileReader
や FileWriter
といったクラスを使用することです。また、バイトストリーム(InputStream
、OutputStream
)やキャラクタストリーム(Reader
、Writer
)など、多くの種類が存在します。
import java.io.FileWriter;
import java.io.IOException;
public class FileWriteExample {
public static void main(String[] args) {
try (FileWriter writer = new FileWriter("example.txt")) {
writer.write("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReadExample {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
オブジェクトをファイルに保存し、後で再構築するために、Javaではシリアライズ機能が提供されています。Serializable
インターフェースを実装し、ObjectOutputStream
と ObjectInputStream
を用います。
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class SerializationExample {
public static void main(String[] args) {
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("data.ser"))) {
out.writeObject(new Person("Alice", 25));
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class DeserializationExample {
public static void main(String[] args) {
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.ser"))) {
Person person = (Person) in.readObject();
System.out.println(person);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
Javaは並行処理をサポートしており、マルチスレッドを使用することで効率的な処理が可能です。マルチスレッドの基本的な方法には Thread
クラスを継承する方法と Runnable
インターフェースを実装する方法の2つがあります。
public class MyThread extends Thread {
public void run() {
System.out.println("Thread is running");
}
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
public class MyRunnable implements Runnable {
public void run() {
System.out.println("Runnable thread is running");
}
public static void main(String[] args) {
Thread thread = new Thread(new MyRunnable());
thread.start();
}
}
複数のスレッドが同じリソースにアクセスする場合、データ競合が発生しやすくなります。これを防ぐために、synchronized
キーワードを用いてメソッドやブロックを同期化します。
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public int getCount() {
return count;
}
}
この章では、Javaのコレクションフレームワーク、ファイル入出力、そしてマルチスレッドの基本について詳しく解説しました。標準ライブラリを活用することで、プログラムの効率化や拡張が容易になり、より柔軟で強力なアプリケーション開発が可能となります。
プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。
独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。
プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:
どちらが自分に合っているか、よく考えて選ぶのが大事です。
プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:
なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。
カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。
独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
↓ ↓ こちらをクリック ↓ ↓