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++]
Loading script...
codechachaCopyright ©2019 codechacha