자바 리스트에서 필요한 위치의 데이터만 슬라이스 하는 방법을 알아보겠습니다.
효율적인 데이터 가공과 빠른 성능은 코드 품질을 높이기 위해 꼭 필요합니다.


for loop

for-loop는 전통적인 코드이면서 성능이 검증된 방식입니다.
그래서 대용량의 데이터를 변환 할 때 우선 고려됩니다.

package com.devfoxstar.codingtest;

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

public class Slice {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        list.add("E");

        List<String> subList = new ArrayList<>();
        for (int i = 2; i < 4; i++) {
             subList.add(list.get(i));
        }

        System.out.println(subList);    //[C, D]
    }
}

subList

subList는 간단하게 사용할 수 있지만, 메모리 문제가 있습니다.
변환 과정에서 부모 객체의 값을 메모리에 기억하기 때문입니다.

따라서 대용량의 데이터를 처리하는 함수로는 적합하지 않습니다.

package com.devfoxstar.codingtest;

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

public class Slice {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        list.add("E");

        List<String> subList = new ArrayList<>(list.subList(2,4));
        System.out.println(subList);    //[C, D]
    }
}

Stream API

자바8 부터 추가된 Stream APILambda를 활용해서 간편하게 데이터 가공이 가능합니다.
단 한줄의 코드로 간단하게 구현이 가능합니다.

물론 Stream API는 아직 전통적인 for-loop 방식에 비하면 성능이 떨어집니다.
그래서 대용량의 데이터를 처리하거나 복잡한 변환이 필요한 경우에는 성능 체크가 필수입니다.

package com.devfoxstar.codingtest;

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

public class Slice {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        list.add("E");

        List<String> subList = list.stream().skip(2).limit(2).collect(Collectors.toList());
        System.out.println(subList);    //[C, D]
    }
}

결론

리스트 데이터를 가공하는 방식은 다양합니다.
최근에는 Stream API + Lambda 조합이 필수처럼 사용되고 있습니다.

하지만 상황에 따라서 성능 저하가 발생할 수 있습니다.
그래서 대용량의 데이터를 처리한다면, 선택한 방식의 성능 체크는 필수입니다.

그리고 여전히 for-loop 연산은 좋은 성능으로 자주 활용되고 있습니다.

© 2025, All Rights Reserved.

Quick Links