コレクションを操作するメソッドの使い方

# コレクションを操作するメソッドの使い方

コレクションを操作する下記のメソッド使い方をListを使用して確認してみようと思います。

* ` ArrayList.add(? e) `  
引数の値を新しい要素としてリストの最後に追加します。
* ` ArrayList.get(int i) `  
引数の値のインデックスの要素を返します。
* ` ArrayList.indexOf(? e) `  
引数と一致する要素がリストに含まれていないかインデックス0から順番に確認し、一致した要素があればインデックスを返します。  
一致する要素がない場合は-1を返します。  

* ` ArrayList.removeAll(ArryList<?> e) `

引数のリストの要素と一致する要素を削除します。

* ` ArrayList.removeIf(Predicate<? super E> filter) `  
指定された条件を満たす要素を削除します。

* ` ArrayList.replaceAll(UnaryOperator<E> operator) `  
指定された処理を行い、リストに返します。

* ` ArrayList.sort(Comparator<? super E> c) `  
コンパレーターに従いリストの要素を並び替えます。

* `forEach(Consumer<? super E> action)`  
全ての要素を順番に引数にして指定された処理を行います。  
※戻り値は存在しないのでリストの中身は変更されません。

実際に利用してみたコードがこちらになります。
  
```　JAVA
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {
	public static void main(String[] args) {
		List<Integer> addList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
		addList.add(11);
		System.out.println("add(11)");
		System.out.println(addList);

		List<Integer> getList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
		System.out.println("get(5)");
		System.out.println(getList.get(5));

		List<Integer> indexOftList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
		System.out.println("indexOf(6)");
		System.out.println(indexOftList.indexOf(6));

		List<Integer> removeAllList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
		removeAllList.removeAll(new ArrayList<Integer>(Arrays.asList(1,3,4,5)));
		System.out.println("removeAll(new ArrayList<Integer>(Arrays.asList(1,3,4,5))");
		System.out.println(removeAllList);

		List<Integer> removeIfList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
		removeIfList.removeIf( i -> i % 2 == 0);
		System.out.println("removeIf( i -> i % 2 == 0)");
		System.out.println(removeIfList);

		List<Integer> replaceAllList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
		replaceAllList.replaceAll(i -> i * 2 );
		System.out.println("replaceAll(i -> i * 2 )");
		System.out.println(replaceAllList);

		List<Integer> sortList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
		sortList.sort((Integer i,Integer j) -> j.compareTo(i));
		System.out.println("sort((Integer i,Integer j) -> j.compareTo(i))");
		System.out.println(sortList);

		List<Integer> forEachList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));
		System.out.println("forEach(i -> System.out.print(i + " ") )");
		forEachList.forEach(i -> System.out.print(i + " ") );
	}
}
```

## 実行結果
```
add(11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
get(5)
6
indexOf(6)
5
removeAll(new ArrayList<Integer>(Arrays.asList(1,3,4,5))
[2, 6, 7, 8, 9, 10]
removeIf( i -> i % 2 == 0)
[1, 3, 5, 7, 9]
replaceAll(i -> i * 2 )
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
sort((Integer i,Integer j) -> j.compareTo(i))
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
forEach(i -> System.out.print(i + " ") )
1 2 3 4 5 6 7 8 9 10 
```
## 解説  
宣言時は全てのリストのパラメータがIntegerに設定されており、要素は1~10の数値になっています。  

1. addList  
add(11)によって11がリストの要素に加わっています。
2. getList  
get(5)によってインデックスが5の要素6が返ってきています。  
※インデックスは0から数えるため  
3. indexOftList  
indexOf(6)によって引数(6)と一致する要素のインデックス5が返ってきています。  
※インデックスは0から数えるため  
4. removeAllList  
removeAll(new ArrayList<Integer>(Arrays.asList(1,3,4,5))の引数で渡されたListに含まれる要素と一致している要素(1,3,4,5)を削除しています。
5. removeIfList  
removeIfメソッドを利用して、偶数の要素を削除しています。
6. replaceList  
全ての要素を二倍にしてリストに返しています。
7. replaceAllList  
降順に並び替える様に設定したコンパレーターを作成し、コンパレーターを利用してリストを並び替えています。
8. forEachList
要素を一つずつ受け取り、System.out.printによってコンソールに表示させています。

## まとめ
コレクションを操作するメソッドはjava.utilパッケージに多数用意されており、自分の目的に合ったメソッドを利用する事でだいたいの処理は作成できる。