Listの要素を追加、削除する方法(JAVA)

# Listの要素を追加、削除する方法(JAVA)
今回はListの要素を追加、削除する方法を紹介させて頂きます。  
___
1.[Listに要素を追加したい場合](#anchor1)  
2.[Listの要素を削除したい場合](#anchor2)   
3.[削除したい要素のインデックスが分からない場合](#anchor3)   
4.[削除したい要素が複数存在する場合](#anchor4)   
5.[List内の全ての要素を削除したい場合](#anchor5)   
6.[まとめ](#anchor6) 
___

## Listに要素を追加したい場合 <a id="anchor1"></a>
配列と違い、Listは初期化後に要素数を増やすことが可能です。  
Listに要素を追加する場合はaddメソッドを利用します。  
` List.add(追加したい要素) `  
使用例

```　JAVA
public class Main {
	public static void main(String[] args) {
		List<String> list = new ArrayList<>(Arrays.asList("Apple","Orange","Grape"));
        System.out.println("listの中身");
        System.out.println(list);
		list.add("Melon");
        System.out.println("listの中身(addメソッド実行後)");
		System.out.println(list);
    }
}
```
実行結果

```
listの中身
[Apple, Orange, Grape]
listの中身(addメソッド実行後)
[Apple, Orange, Grape, Melon]
```
addメソッドによってListに要素を追加する事ができました。
___
## Listの要素を削除したい場合 <a id="anchor2"></a>
要素を追加する方法があれば当然、削除する方法もあります。  
Listから要素を削除する場合はremoveメソッドを利用します。  
` List.remove(削除したい要素のインデックス) `  
使用例

```　JAVA
public class Main {
	public static void main(String[] args) {
		List<String> list = new ArrayList<>(Arrays.asList("Apple","Orange","Grape"));
		System.out.println("listの中身");
		System.out.println(list);
		list.remove(1);
		System.out.println("listの中身(removeメソッド実行後)");
		System.out.println(list);
    }
}
```
実行結果

```
listの中身
[Apple, Orange, Grape]
listの中身(removeメソッド実行後)
[Apple, Grape]
```
removeメソッドによってインデックス1に格納されていたOrangeが削除できました。  
___
## 削除したい要素のインデックスが分からない場合 <a id="anchor3"></a>

しかし、このままでは削除したい要素のインデックスが分かっていないと削除が行えません。  
なので値が一致する要素のインデックスを調べることができるindexOfメソッドをあわせて利用する機会が多いと思います。  
indexOfメソッドの利用方法は下記の通りになります。  
` List.indexOf(検索したい要素);`  
使用例

```　JAVA
public class Main {
	public static void main(String[] args) {
		List<String> list = new ArrayList<>(Arrays.asList("Apple","Orange","Grape"));
		System.out.println("listの中身");
		System.out.println(list);
		System.out.println("List.indexOf(\"Orange\")の返り値");
		System.out.println(list.indexOf("Orange"));
		list.remove(list.indexOf("Orange"));
		System.out.println("listの中身(removeメソッド使用後)");
		System.out.println(list);
    }
}
```
実行結果

```
listの中身
[Apple, Orange, Grape]
list.indexOf("Orange")の返り値
1
listの中身(removeメソッド使用後)
[Apple, Grape]
```
削除したい要素の値で削除を行うことができました！ 
___
## 削除したい要素が複数存在する場合 <a id="anchor4"></a>

ここまでで要素の削除方法を紹介しましたが、まだ問題があります。  
値が重複した要素がList内にあった場合はどうでしょうか？  

```　JAVA
public class Main {
	public static void main(String[] args) {
		List<String> list = new ArrayList<>(Arrays.asList("Apple","Orange","Grape","Orange","Apple"));
		System.out.println("listの中身");
		System.out.println(list);
		list.remove(list.indexOf("Orange"));
		System.out.println("listの中身(removeメソッド使用後)");
		System.out.println(list);
    }
}
```
実行結果

```
listの中身
[Apple, Orange, Grape, Orange, Apple]
listの中身(removeメソッド使用後)
[Apple, Grape, Orange, Apple]
```
当然ですがインデックスで削除する対象を指定しているため、一つ目の"Orange"しか削除されません。（indexOfメソッドは値が一致する要素があるかインデックス0から順番に確認するため、同じ値の要素が複数あった場合は一番小さいインデックスが出力される）  
このように削除したい値の要素が複数存在し、全てを削除したい場合はremoveAllメソッドを利用します。  
` List.removeAll("削除したい要素の入ったList");`  
使用例

```　JAVA
public class Main {
	public static void main(String[] args) {
		List<String> list = new ArrayList<>(Arrays.asList("Apple","Orange","Grape","Orange","Apple"));
		System.out.println("listの中身");
		System.out.println(list);
		List<String> removeList = new ArrayList<>(Arrays.asList("Orange"));
		list.removeAll(removeList);
		System.out.println("listの中身(removeAllメソッド使用後)");
		System.out.println(list);
    }
}
```
実行結果

```
listの中身
[Apple, Orange, Grape, Orange, Apple]
listの中身(removeAllメソッド使用後)
[Apple, Grape, Apple]

```
removeAllメソッドの引数に渡したremoveListの要素である"Orange"が全て削除されました！  
removeAllメソッドでは引数に渡したListの要素が複数あれば一致する要素を全て削除してくれます。  
使用例

```　JAVA
public class Main {
	public static void main(String[] args) {
		List<String> list = new ArrayList<>(Arrays.asList("Apple","Orange","Grape","Orange","Apple"));
		System.out.println("listの中身");
		System.out.println(list);
		List<String> removeList = new ArrayList<>(Arrays.asList("Orange","Apple"));
		list.removeAll(removeList);
		System.out.println("listの中身(removeAllメソッド使用後)");
		System.out.println(list);
    }
}
```
実行結果

```
listの中身
[Apple, Orange, Grape, Orange, Apple]
listの中身(removeAllメソッド使用後)
[Grape]
```
removeListに含まれた要素が全て削除された事が分かります。
___
## List内の全ての要素を削除したい場合 <a id="anchor5"></a>
ここまではList内の特定の要素を削除する方法を紹介してきましたが、最後にList内の全ての要素を削除する方法を紹介しておきます。  
List内の全ての要素を削除する場合はclearメソッドを利用します。  
` List.clear();`  
使用例

```　JAVA
public class Main {
	public static void main(String[] args) {
		List<String> list = new ArrayList<>(Arrays.asList("Apple","Orange","Grape","Orange","Apple"));
		System.out.println("listの中身");
		System.out.println(list);
		list.clear();
		System.out.println("listの中身(clearメソッド使用後)");
		System.out.println(list);
    }
}
```
実行結果

```
listの中身
[Apple, Orange, Grape, Orange, Apple]
listの中身(clearメソッド使用後)
[]
```
listの中身が全て削除されました！
___
## まとめ <a id="anchor6"></a>
* Listに要素を追加したい場合はaddメソッドを利用する。
* Listの1つの要素を削除したい場合はremoveメソッドを利用する。
* List内にある値のインデックスを調べたいときはindexOfメソッドを利用する。
* List内にある複数の要素を削除したい場合はremoveAllメソッドを利用する。
* List内の要素を全て削除したい場合はclearメソッドを利用する。