Java - ArrayList要素の値を変更する方法、replaceAll()

List、ArrayList要素の値を変更する方法を紹介します。

1. set() でリストの特定の Index 要素の値を変更する

ArrayList.set(index, value) はリストの特定のインデックス要素を value に変更します。

以下のようにIndex 2の要素を CCCに変更できます。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Example {

    public static void main(String[] args) {

        List<String> myList = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));

        myList.set(2, "CCC");
        System.out.println(myList);
    }
}

Output:

[A, B, CCC, D]

2. replaceAll() でリストのすべての要素の値を変更する

ArrayList.replaceAll() は引数として関数を受け取り、関数はリストの要素を引数として受け取り、変更する値を返します。 つまり、リストのすべての要素を巡回しながら値を変更できます。

以下の例は、リストの要素がnullの場合に空の文字列に変更してnullが存在しないようにする例です。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Example1 {

    public static void main(String[] args) {

        List<String> myList = new ArrayList<>(Arrays.asList("A", null, "B", null, "C", null, "D"));
        System.out.println(myList);

        myList.replaceAll(s -> s != null ? s : "");
        System.out.println(myList);
    }
}

Output:

[A, null, B, null, C, null, D]
[A, , B, , C, , D]

3. Collectionsでリスト内のすべての要素の値を変更する

Collections.replaceAll(list, oldValue, newValue) はリストの oldValue を newValue に変更します。

Collections を使用して上記の内容を実装できます。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Example3 {

    public static void main(String[] args) {

        List<String> myList = new ArrayList<>(Arrays.asList("A", null, "B", null, "C", null, "D"));
        System.out.println(myList);

        Collections.replaceAll(myList, null, "");
        System.out.println(myList);
    }
}

Output:

[A, null, B, null, C, null, D]
[A, , B, , C, , D]

4. Streamでリストのすべての要素の値を変更する

Streamを使用して上記の内容を実装できます。

リストをStreamにし、 Stream.map()でnullを空の文字列に変更できます。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example4 {

    public static void main(String[] args) {

        List<String> myList = new ArrayList<>(Arrays.asList("A", null, "B", null, "C", null, "D"));
        System.out.println(myList);

        List<String> newList = myList.stream()
                .map(s -> s != null ? s : "")
                .collect(Collectors.toList());
        System.out.println(newList);
    }
}

Output:

[A, null, B, null, C, null, D]
[A, , B, , C, , D]

5. replaceAll() でリストのすべての要素に特定の値を追加する

リストのすべての要素に特定の文字列を追加したい場合は、以下のように replaceAll() で実装できます。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Example2 {

    public static void main(String[] args) {

        List<String> myList = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));

        myList.replaceAll(s -> s + "++");
        System.out.println(myList);
    }
}

Output:

[A++, B++, C++, D++]
codechachaCopyright ©2019 codechacha