Java勉強メモ７_標準ライブラリ

# 標準ライブラリ
### Stringクラス
**String**クラスは、文字列を操作するためのメソッドを提供します。
#### 主要な特徴
文字列は不変であり、一度作成すると変更できません。
新しい文字列を作成すると、実際には新しい**String**オブジェクトが生成されます。
#### 主要なメソッド
1. length()
**説明**: 文字列の長さ（文字数）を返します。
**例:** str.length()
2. charAt(int index)
**説明:** 指定されたインデックス位置にある文字を返します。
**例:** str.charAt(0)
3. substring(int beginIndex, int endIndex)
**説明:** 文字列の指定された範囲のサブストリングを返します。
**例:** str.substring(1, 4)
4. equals(Object anotherString)
**説明:** 文字列が指定されたオブジェクトと等しいかどうかを比較します。
**例:** str.equals("test")
5. equalsIgnoreCase(String anotherString)
**説明:** 文字列を大文字と小文字を区別せずに比較します。
**例:** str.equalsIgnoreCase("TEST")
6. startsWith(String prefix)
**説明:** 文字列が指定された接頭辞で始まるかどうかを判断します。
**例:** str.startsWith("He")
7. endsWith(String suffix)
**説明:** 文字列が指定された接尾辞で終わるかどうかを判断します。
**例:** str.endsWith("ld")
8. contains(CharSequence s)
**説明:** 文字列が指定された文字列を含むかどうかを確認します。
**例:** str.contains("lo")
9. indexOf(String str)
**説明:** 指定された文字列が最初に出現するインデックスを返します。
**例:** str.indexOf("l")
10. lastIndexOf(String str)
**説明:** 指定された文字列が最後に出現するインデックスを返します。
**例:** str.lastIndexOf("l")
11. toUpperCase()
**説明:** 文字列のすべての文字を大文字に変換します。
**例:** str.toUpperCase()
12. toLowerCase()
**説明:** 文字列のすべての文字を小文字に変換します。
**例:** str.toLowerCase()
13. trim()
**説明:** 文字列の先頭および末尾の空白を削除します。
**例:** str.trim()
14. replace(char oldChar, char newChar)
**説明:** 文字列内の指定された文字を別の文字で置き換えます。
**例:** str.replace('e', 'a')

### Mathクラス
Mathクラスは、基本的な数学的演算や関数を提供するユーティリティクラスです。
#### 主要なメソッド
1. abs()
**説明:** 引数の絶対値を返します。
**例:** Math.abs(-4.7) は 4.7 を返します。
2. ceil()
**説明:** 引数の値以上で最小の整数をdouble型で返します。
**例:** Math.ceil(4.2) は 5.0 を返します。
3. floor()
**説明:** 引数の値以下で最大の整数をdouble型で返します。
**例:** Math.floor(4.8) は 4.0 を返します。
4. round()
**説明:** 引数を最も近い整数に四捨五入します。
**例:** Math.round(4.4) は 4 を、Math.round(4.5) は 5 を返します。
5. max()
**説明:** 二つの引数のうち大きい方を返します。
**例:** Math.max(3, 5) は 5 を返します。
6. min()
**説明:** 二つの引数のうち小さい方を返します。
**例:** Math.min(3, 5) は 3 を返します。
7. sqrt()
**説明:** 引数の平方根を返します。
**例:** Math.sqrt(16) は 4.0 を返します。
8. pow()
**説明:** 第一引数を底とし、第二引数を指数とするべき乗の結果を返します。
**例:** Math.pow(2, 3) は 8.0 を返します。
9. random()
**説明:** 0.0以上1.0未満のランダムなdouble値を返します。
**例:** Math.random() はランダムな値を返します。
10. sin(), cos(), tan()
**説明:** 引数（ラジアン単位）の正弦（sin）、余弦（cos）、正接（tan）を返します。
**例:** Math.sin(Math.PI / 2) は 1.0 を返します。
11. asin(), acos(), atan()
**説明:** 引数の逆正弦（asin）、逆余弦（acos）、逆正接（atan）をラジアンで返します。
**例:** Math.asin(1.0) は Math.PI / 2 を返します。
12. toRadians(), toDegrees()
**説明:** 角度をラジアンに変換する（toRadians）、ラジアンを角度に変換する（toDegrees）。
**例:** Math.toRadians(180) は Math.PI を、Math.toDegrees(Math.PI) は 180.0 を返します。

### コレクションフレームワーク
#### Listインターフェース
Listインターフェースは順序付けられたコレクションで、ユーザーはリスト内の各要素に特定の位置を割り当てます。これにより、同じ値の要素がリスト内に複数回出現することができます。

主要な特徴とメソッド
要素のインデックスによるアクセスが可能です。
**add()**, **remove()**, **get()**, **set()**などのメソッドが提供されています。
実装クラス
**ArrayList:** 配列ベースで実装されており、ランダムアクセスに優れています。
**LinkedList:** リンクリストによる実装で、要素の挿入と削除が効率的です。

#### Setインターフェース
Setインターフェースはユニークな要素のコレクションで、同じ要素の重複を許しません。

主要な特徴とメソッド
要素の追加、削除、検索が可能ですが、インデックスによるアクセスは提供されていません。
**add(), remove(), contains()**などのメソッドが利用可能です。
実装クラス
**HashSet:** ハッシュテーブルによる実装で、高速なアクセスを提供します。
**LinkedHashSet:** HashSetにリンクリストを組み合わせ、挿入順を維持します。
**TreeSet:** 木に基づく実装で、要素は自然順序付けされます。

#### Mapインターフェース
Mapインターフェースはキーと値のペアを格納するためのコレクションです。各キーはユニークである必要があり、それぞれのキーには一つの値が関連付けられています。

主要な特徴とメソッド
**put(), get(), remove()**などのメソッドを使用して、キーに基づいて値を操作します。
**keySet(), values(), entrySet()**メソッドでキー、値、またはキーと値のペアのセットを取得できます。
実装クラス
**HashMap**: ハッシュテーブルに基づく実装で、高速なアクセスが可能です。
**LinkedHashMap**: HashMapにリンクリストを組み合わせ、挿入順を維持します。
**TreeMap**: 赤黒木に基づく実装で、キーは自然順序付けされます。
これらのインターフェースとクラスは、様々なデータ構造のニーズに応えるために設計されています。適切なコレクションタイプを

選択することで、プログラムのパフォーマンスや効率を最適化できます。それぞれのコレクションは特定のユースケースに合わせて使い分けることが重要です。

Listの使用例
``` java
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
String first = names.get(0); // "Alice" を取得
```

Setの使用例
``` java
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(1); // 重複する要素は追加されない
boolean containsTwo = numbers.contains(2); // true
```

Mapの使用例
``` java
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 25);
ages.put("Bob", 30);
Integer age = ages.get("Alice"); // 25 を取得
```