【Java】Listの基本的な使い方についてまとめてみた

プログラミング

Javaで開発する上で必要不可欠なListの操作についてまとめました。ここで扱うのはArrayListになります。

Listの追加

■ add(E element)

末尾に引数の要素を追加します。

■ add(int index, E element)

indexの位置にelementを追加します。

List<String> list = new ArrayList<>();
list.add("AAA");      //["AAA"]
list.add("BBB");      //["AAA", "BBB"]
list.add(1, "CCC");   //["AAA", "CCC", "BBB"]

■ addAll(Collection <? extends E> c)

末尾にCollectionのすべての要素を追加します。

■ addAll(int index, Collection <? extends E> c)

indexの位置からCollectionのすべての要素を追加します。

List<String> list = new ArrayList<>();
list.add("AAA");
list.add("BBB");

List<String> listA = new ArrayList<>();
listA.add("CCC");
listA.add("DDD");

List<String> listB = new ArrayList<>();
listB.add("EEE");
listB.add("FFF");

list.addAll(listA);     //["AAA", "BBB", "CCC", "DDD"]
list.addAll(1, listB);  //["AAA", "EEE", "FFF", "BBB", "CCC", "DDD"]

Listの検索

■ indexOf(Object c)

前方から引数と同じ値を検索し、最初に見つかったインデックスを返します。対象の値がない場合は-1を返します。

※参照型における同じ値とは、equals() == trueのオブジェクトを指します。

■ lastIndexOf(Object c)

後方から引数と同じ値を検索し、最初に見つかったインデックスを返します。対象の値がない場合は-1を返します。

List<String> list = new ArrayList<>();
list.add("AAA");
list.add("BBB");
list.add("CCC");
list.add("BBB");
list.add("CCC");
list.add("AAA");

list.indexOf("BBB");       //1
list.lastIndexOf("BBB");   //3

■ contains(Object c)

引数のと同じ値がListに存在するかを返します。

※参照型における同じ値とは、equals() == trueのオブジェクトを指します。

■ containsAll(Collection<?> c)

引数に含まれる値すべてがListに存在しているかを返します。

List<String> list = new ArrayList<>();
list.add("AAA");
list.add("BBB");
list.add("CCC");

List<String> listA = new ArrayList<>();
listA.add("BBB");
listA.add("CCC");

List<String> listB = new ArrayList<>();
listB.add("BBB");
listB.add("DDD");

list.contains("BBB");     //true
list.contains("DDD");     //false
list.containsAll(listA);  //true
list.containsAll(listB);  //false

Listの置換

■ set(int index, E element)

indexの位置の値をelementに書き換えます。

■ replaceAll(UnaryOperator<E> Operator)

Listの値をすべて式に従って書き換えます。

List<String> list = new ArrayList<>();
list.add("AAA");
list.add("BBB");
list.add("CCC");

list.set(1, "DDD");   //["AAA", "DDD", "CCC"]
list.replaceAll(String::toLowerCase); //["aaa", "ddd", "ccc"]

Listの参照

■ get(int index)

indexの位置にある値を返します。

■ size()

Listの要素数を返します。

■ isEmpty()

Listの要素数が空ならtrue、そうでなければfalseを返します。

List<String> list = new ArrayList<>();
list.add("AAA");
list.add("BBB");
list.add("CCC");

list.get(1);      //"BBB"
list.size();      //3
list.isEmpty();   //false

Listの削除

■ clear()

List内の要素をすべて削除します。

■ remove(int index)

indexの位置にある要素を削除します。

■ remove(Object o)

前方から引数と同じ値を検索し、最初に見つかったものだけを削除します。

List<String> list = new ArrayList<>();
list.add("AAA");
list.add("BBB");
list.add("CCC");
list.add("DDD");
list.add("EEE");

list.remove(1);       //["AAA", "CCC", "DDD", "EEE"]
list.remove("DDD");   //["AAA", "CCC", "EEE"]
list.clear();         //[]

※補足:List<Integer>の場合、普通にint型の値を指定するとindexによる削除が実行されます。Object側の削除を実行したい場合はIntegerにキャストします。

List<Integer> list = new ArrayList<>();
list.add(2);
list.add(1);
list.add(4);
list.add(5);
list.add(3);

list.remove(2);           //[2, 1, 5, 3]
list.remove((Integer)2);  //[1, 5, 3]

■ removeAll(Collection<?> c)

引数に含まれる値と同じ要素をすべてListから削除します。

List<String> list = new ArrayList<>();
list.add("AAA");
list.add("BBB");
list.add("CCC");
list.add("AAA");

List<String> listA = new ArrayList<>();
listA.add("AAA");
listA.add("CCC");

list.removeAll(listA);  //["BBB"]

■ removeIf(Predicate <? super E> filter)

条件に一致する要素をすべてListから削除します。

List<String> list = new ArrayList<>();
list.add("ABC");
list.add("ACD");
list.add("EDC");
list.add("BEA");
list.add("BDE");

list.removeIf(e -> {
  return e.indexOf("B") > 0;
});   //["ACD", "EDC"]

その他

■ sort(Comparator<? super E> c)

ListをComparatorに従いソートします。ソートの詳しい内容はこちらを参照してください。

【Java】Listのソート方法(Collections)
基本的にデータのソートはSQLで完結させてしまうのですが、どうしてもプログラム内でソートをしなければいけないことがあります。今回はJavaのListのソート方法について解説していきます。
List<String> list = new ArrayList<>();
list.add("BBB");
list.add("CCC");
list.add("AAA");

list.sort(new Comparator<String>() {
  @Override
  public int compare(String a, String b) {
    return a.compareTo(b);
  }
});   //["AAA", "BBB", "CCC"]

■ subList(int fromIndex, int toIndex)

fromIndex ~ toIndex – 1 の範囲の要素のリストを生成します。

※要素はシャロ―コピーとなっているため扱いには注意してください。

List<String> list = new ArrayList<>();
list.add("AAA");
list.add("BBB");
list.add("CCC");
list.add("DDD");
list.add("EEE");
List<String> listA = list.subList(1, 4);  //["BBB", "CCC", "DDD"]
listA.set(0, "FFF");                      //listA = ["FFF", "CCC", "DDD"]
                                          //list  = ["AAA", "FFF", "CCC", "DDD", "EEE"]

 

- Javaのおすすめ書籍はコチラ -

コメント

タイトルとURLをコピーしました