티스토리 뷰

728x90

Dart에서 하나의 리스트를 두개로 분리하는 방법에 대해서 알아보겠습니다.

 

Index 범위로 리스트 나누기

list.sublist(start, end)는 list에서 start index를 포함하고 end를 포함하지 않는 범위 요소들의 리스트를 리턴합니다.

 

아래 예제에서 sublist(0, 4)는 Index 0에서 Index 3까지의 요소들이 포함된 리스트가 리턴됩니다.

void main() {

    List<int> list = [1, 2, 3, 4, 5, 6, 7, 8];

    List<int> subList1 = list.sublist(0, 4);
    List<int> subList2 = list.sublist(4, list.length);

    print(subList1);
    print(subList2);
}

// [1, 2, 3, 4]
// [5, 6, 7, 8]

 

list.sublist(start)는 start 인덱스부터 리스트 마지막까지의 요소들이 포함된 리스트가 리턴됩니다.

void main() {

    List<int> list = [1, 2, 3, 4, 5, 6, 7, 8];

    List<int> subList1 = list.sublist(4);

    print(subList1);
}

// [5, 6, 7, 8]

 

 

특정 조건으로 리스트 나누기

인덱스를 기준으로 리스트를 나누지 않고, 요소 값에 따라서 특정 조건으로 리스트를 분리할 수 있습니다.

 

예를 들어, 아래 예제는 리스트의 요소들을 짝수와 홀수로 나눠서 각각의 리스트에 저장하여 분리합니다.

for문을 사용하여 직접 구현하였습니다.

void main() {

    List<int> numbers = [1, 2, 3, 4, 5];
    List<int> evenNumbers = [];
    List<int> oddNumbers = [];

    for (int number in numbers) {
      if (number % 2 == 0) {
        evenNumbers.add(number);
      } else {
        oddNumbers.add(number);
      }
    }

    print("Even numbers: $evenNumbers");
    print("Odd numbers: $oddNumbers");
}

// Even numbers: [2, 4]
// Odd numbers: [1, 3, 5]

 

 

for문 대신에, List.where()를 사용하여 동일하게 리스트를 분리할 수 있습니다.

where()는 인자로 함수가 전달되며, 모든 요소에 대해서 함수를 호출하여 true를 리턴하는 요소들이 리스트로 리턴됩니다.

아래 예제를 보면 where()안의 함수에 짝수 또는 홀수를 판단하는 코드를 추가하였습니다.

void main() {

    List<int> numbers = [1, 2, 3, 4, 5];
    List<int> evenNumbers = numbers.where((number) => number % 2 == 0).toList();
    List<int> oddNumbers = numbers.where((number) => number % 2 == 1).toList();

    print("Even numbers: $evenNumbers");
    print("Odd numbers: $oddNumbers");

}

// Even numbers: [2, 4]
// Odd numbers: [1, 3, 5]
728x90

'개발 > Dart' 카테고리의 다른 글

Dart에서 sleep()으로 몇초 지연  (1) 2024.09.01
Dart - 파일/디렉토리 삭제  (0) 2023.06.11
Dart - 예외처리 방법(Exception handling)  (0) 2023.04.26
Dart - 리스트 정렬 방법  (0) 2023.04.17
Dart - Map 생성, 초기화 방법  (0) 2023.04.16