Listの要素を編集、並び替える方法(JAVA)

# Listの要素を編集、並び替える方法(JAVA)
今回はListの要素を編集、並び替える方法を紹介させて頂きます。  
___
1.[List内の特定の要素の値を変更したい場合](#anchor1)  
2.[Listの要素を並び替える方法(昇順)](#anchor2)   
3.[Listの要素を並び替える方法(降順)](#anchor3)   
4.[まとめ](#anchor4)     
___
## List内の特定の要素の値を変更したい場合 <a id="anchor1"></a>
List内の特定の要素の値を変更したい場合はreplaceメソッドを利用します。  
` List.set(変更したい要素のインデックス,変更後の値)`  
使用例

```　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.set(1,"Melon");
		System.out.println("listの中身(setメソッド使用後)");
		System.out.println(list);
    }
}
```
実行結果

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

また、変更したい要素のインデックスではなく値で指定したい場合が多いと思うので、値が一致する要素のインデックスを調べることができる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);
		list.set(list.indexOf("Orange"),"Melon");
		System.out.println("listの中身(replaceメソッド使用後)");
		System.out.println(list);
    }
}
```
実行結果

```
listの中身
[Apple, Orange, Grape]
listの中身(replaceメソッド使用後)
[Apple, Melon, Grape]
```
"Orange"のインデックスがindexOfメソッドで返ってきてMelonに変更されている事が分かります。
___
## Listの要素を並び替える方法(昇順)<a id="anchor2"></a>
Listの並び替えを行いたい場合はCollectionsクラスのsortメソッドを利用します。  
` Collections.sort(List);`  
使用例

```　JAVA
public class Main {
	public static void main(String[] args) {
		List<String> strList = new ArrayList<>(Arrays.asList("Apple","Orange","Grape"));
		System.out.println("strListの中身");
		System.out.println(strList);

		Collections.sort(strList);

		System.out.println("strListの中身(sortメソッド使用後)");
		System.out.println(strList);
		System.out.println("------------------------------------------------------------");
		List<Integer> intList = new ArrayList<>(Arrays.asList(5,1,7));
		System.out.println("intListの中身");
		System.out.println(intList);

		Collections.sort(intList);

		System.out.println("intListの中身(sortメソッド使用後)");
		System.out.println(intList);
    }
}
```
実行結果

```
strListの中身
[Apple, Orange, Grape]
strListの中身(sortメソッド使用後)
[Apple, Grape, Orange]
------------------------------------------------------------
intListの中身
[5, 1, 7]
intListの中身(sortメソッド使用後)
[1, 5, 7]
```
listの中身が昇順で並び替えられたことが分かります。
___
## Listの要素を並び替える方法(降順) <a id="anchor3"></a>
Listを降順で並び替えたい場合はsortメソッドの第二引数にCollections.reverseOrderメソッドを指定します。  
` Collections.sort(List,Collections.reverseOrder());`  
使用例  

```　JAVA
public class Main {
	public static void main(String[] args) {
        List<String> strList = new ArrayList<>(Arrays.asList("Apple","Orange","Grape"));
		System.out.println("strListの中身");
		System.out.println(strList);

		Collections.sort(strList,Collections.reverseOrder());

		System.out.println("strListの中身(sortメソッド使用後)");
		System.out.println(strList);
		System.out.println("------------------------------------------------------------");
		List<Integer> intList = new ArrayList<>(Arrays.asList(5,1,7));
		System.out.println("intListの中身");
		System.out.println(intList);

		Collections.sort(intList,Collections.reverseOrder());

		System.out.println("intListの中身(sortメソッド使用後)");
		System.out.println(intList);
    }
}
```
実行結果

```
strListの中身
[Apple, Orange, Grape]
strListの中身(sortメソッド使用後)
[Orange, Grape, Apple]
------------------------------------------------------------
intListの中身
[5, 1, 7]
intListの中身(sortメソッド使用後)
[7, 5, 1]
```
___
## まとめ <a id="anchor4"></a>
* Listの要素を書き換えたい場合はreplaceメソッドを利用する。
* List内にある値のインデックスを調べたいときはindexOfメソッドを利用する。
* Listの要素を昇順で並び替えたい場合はsortメソッドを利用する。
* Listの要素を降順で並び替えたい場合はsortメソッドを利用し、第二引数にCollections.reverseOrder()を利用する。