Listのメソッド

Listのメソッドについてまとめていきます。
随時更新していく予定です。

#add(E e)
指定された要素をこのリストの最後に追加します。

```java
List<String> list = new ArrayList<>();
list.add("あいう");
list.add("えお");
list.add("asdf");
System.out.println(list);
```
```java
[あいう, えお, asdf]
```

#add(int index, E element)
リスト内の指定された位置に、指定された要素を挿入します。

```java
List<String> list = new ArrayList<>();
list.add("あいう");
list.add("えお");
//0番目に挿入する
list.add(0, "ABCD");
list.add("asdf");
System.out.println(list);
```
```java
[ABCD, あいう, えお, asdf]
```

#


#clear()
すべての要素をこのリストから削除します。

```java
List<String> list = new ArrayList<>();
list.add("あいう");
list.add("えお");
list.add(0, "ABCD");
list.add("asdf");
System.out.println(list);
list.clear();
System.out.println(list);
```
```java
[ABCD, あいう, えお, asdf]
[]
```

#contains(Object o)
指定の要素がこのリストに含まれている場合にtrueを返します。

```java
List<String> list = new ArrayList<>();
list.add("あいう");
list.add("えお");
list.add(0, "ABCD");
list.add("asdf");

//"asdf"はlistに含まれているので、true
System.out.println(list.contains("asdf"));
//"a"はlistに含まれていないので、false
System.out.println(list.contains("a"));
```
```java
true
false
```

#containsAll(Collection<?> c)
指定されたコレクションのすべての要素がこのリストに含まれている場合にtrueを返します。

```java
List<String> list = new ArrayList<>();
List<String> list3 = new ArrayList<>();
List<String> list4 = new ArrayList<>();

list.add("あい");
list.add("うえ");
list.add(0, "AB");
list3.add("あい");
list3.add("うえ");
list3.add(0, "AB");
list4.add("あい");
list4.add("う");
list4.add(0, "AB");

//listとlist3の含まれている要素が同じなので、true
System.out.println(list.containsAll(list3));
//listとlist4の含まれている要素が相違しているので、false
System.out.println(list.containsAll(list4));
```
```java
true
false
```

#equals(Object o)
指定されたオブジェクトがこのリストと等しいかどうかを比較します。

```java
List<String> list = new ArrayList<>();
List<String> list3 = new ArrayList<>();
List<String> list4 = new ArrayList<>();

list.add("あい");
list.add("うえ");
list.add(0, "AB");
list3.add("あい");
list3.add("うえ");
list3.add(0, "AB");
list4.add("あい");
list4.add("う");
list4.add(0, "AB");

System.out.println(list.equals(list3));
System.out.println(list.equals(list4));
```
```java
true
false
```

#get(int index)
このリスト内の指定された位置にある要素を返します。

```java
List<String> list = new ArrayList<>();

list.add("あい");
list.add("うえ");
list.add(0, "AB");

System.out.println(list.get(1));
System.out.println(list.get(2));
//IndexOutOfBoundsException
System.out.println(list.get(3));

```
```java
あい
うえ
IndexOutOfBoundsException
```

#hashCode()
このリストのハッシュ・コード値を返します。

```java
List<String> list = new ArrayList<>();

list.add("あい");
list.add("うえ");
list.add(0, "AB");

System.out.println(list.hashCode());
```
```java
14680320
```

#indexOf(Object o)
指定された要素がこのリスト内で最初に検出された位置のインデックスを返します。指定された要素がこのリストにない場合は -1を返します。

```java
List<String> list = new ArrayList<>();

list.add("あい");
list.add("うえ");
list.add(0, "AB");

System.out.println(list.indexOf("あい"));
System.out.println(list.indexOf("AB"));
System.out.println(list.indexOf("ｑ"));
```
```java
1
0
-1
```

#isEmpty()
このリストに要素がない場合にtrueを返します。

```java
List<String> list = new ArrayList<>();
List<String> list3 = new ArrayList<>();
List<String> list4 = new ArrayList<>();

list.add("あい");
list.add("うえ");
list.add(0, "AB");
list3.add("");

//要素があるので、false
System.out.println(list.isEmpty());
//要素にブランクが入っているので、false
System.out.println(list3.isEmpty());
//要素がないので、true
System.out.println(list4.isEmpty());
```
```java
false
false
true
```

#lastIndexOf(Object o)
指定された要素がこのリスト内で最後に検出された位置のインデックスを返します。指定された要素がこのリストにない場合は -1を返します。

```java
List<String> list = new ArrayList<>();

list.add("あい");
list.add("あい");
list.add("うえ");

//検出される最後の位置が1
System.out.println(list.lastIndexOf("あい"));
//"あ"は存在しないので、-1
System.out.println(list.lastIndexOf("あ"));
```
```java
1
-1
```

#remove(int index)
このリスト内の指定された位置にある要素を削除します。

```java
List<String> list = new ArrayList<>();

list.add("あい");
list.add("あい");
list.add("うえ");

System.out.println(list);
System.out.println(list.remove(1));
System.out.println(list);
```
```java
[あい, あい, うえ]
あい
[あい, うえ]
```

#remove(Object o)
指定された要素がこのリストにあれば、その最初のものをリストから削除します。

```java
List<String> list = new ArrayList<>();

list.add("あい");
list.add("あい");
list.add("うえ");

System.out.println(list);
//文字を指定しても削除可能
list.remove("あい");
System.out.println(list);
```
```java
[あい, あい, うえ]
[あい, うえ]
```

#removeAll(Collection<?> c)
このリストから、指定されたコレクションに含まれる要素をすべて削除します。

```java
List<String> list = new ArrayList<>();


list.add("あい");
list.add("あい");
list.add("うえ");

System.out.println(list);
list.removeAll(list);
System.out.println(list);
```
```java
[あい, あい, うえ]
[]
```

#retainAll(Collection<?> c)
このリスト内で、指定されたコレクションに含まれている要素だけを保持します。

※指定されたコレクションに含まれていないすべての要素をこのリストから削除します。

```java
List<String> list = new ArrayList<>(Arrays.asList("Apple","Orange", "Melon"));
List<String> list3 = new ArrayList<>(Arrays.asList("Orange","Melon"));

//listにlist3と同じ要素が含まれているもののみ保持
list.retainAll(list3);
System.out.println(list);
```
```java
[Orange, Melon]
```

#set(int index, E element)
このリスト内の指定された位置にある要素を、指定された要素に置き換えます。

```java
List<String> list = new ArrayList<>(Arrays.asList("Apple","Orange", "Melon"));

//0番目の"Apple"と"Banana"を入れ替える
list.set(0, "Banana");
System.out.println(list);
```
```java
[Banana, Orange, Melon]
```

#size()
このリスト内にある要素の数を返します。

```java
List<String> list = new ArrayList<>(Arrays.asList("Apple","Orange", "Melon"));

System.out.println(list.size());

list.add("Banana");
//直前にaddしているので、要素数が増加
System.out.println(list.size());
```
```java
3
4
```

#subList(int fromIndex, int toIndex)
このリストの、指定されたfromIndex (これを含む)からtoIndex (これを含まない)までの部分のビューを返します。

```java
ArrayList<Integer> foo = new ArrayList<>(Arrays.asList(10, 30, 5, 1, 11, 90));

System.out.println(foo.subList(0, 3));
System.out.println(foo.subList(1, 2));
System.out.println(foo.subList(4, 5));
```
```java
[10, 30, 5]
[30]
[11]
```

#toArray(T[] a)
このリスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)含んでいる配列を返します。
リストから配列に変換するには、toArrayメソッドを利用します。

```java
List<String> list = new ArrayList<>(Arrays.asList("Apple","Orange", "Melon"));

String[] str = new String[list.size()];
list.toArray(str);

System.out.println(Arrays.toString(str));
System.out.println(list);
```
```java
[Apple, Orange, Melon]
[Apple, Orange, Melon]
```