두개의 리스트가 공통적으로 갖고 있는 요소들을 찾는 방법을 예제와 함께 알아보겠습니다. 공통적으로 갖고 있다는 의미는, 두 리스트가 동일한 요소 값을 서로 갖고 있다는 의미로, 두 리스트의 교집합이라고 생각할 수 있습니다.

1. Set를 이용한 방법

Set는 intersection() 함수를 제공하며, 두 Set의 공통 값을 갖고 있는 Set 객체를 리턴합니다. 따라서, 리스트를 Set로 변환하여 intersection() 함수로 공통 요소를 찾고, 다시 리스트로 변환하는 방법이 있습니다.

  1. toSet() 함수로 Set를 리스트로 변환
  2. intersection() 함수로 공통 요소 찾기
  3. toList()로 Set를 리스트로 변환
void main() {
  List<int> list1 = [1, 2, 3, 4];
  List<int> list2 = [3, 4, 5, 6];

  // 리스트를 Set로 변환
  Set<int> set1 = list1.toSet();
  Set<int> set2 = list2.toSet();

  // 공통 요소 찾기
  Set<int> commonSet = set1.intersection(set2);

  // Set를 리스트로 변환
  List<int> result = commonSet.toList();
  print(result);
}

Output:

[3, 4]

2. for문을 이용한 방법

아래와 같이 list1의 모든 값을 순회하면서, 어떤 값이 list2에 있을 때, 다른 리스트에 저장하여 공통 요소만 찾을 수 있습니다.

  1. for문으로 list1의 모든 요소 순회
  2. list1의 어떤 요소가 list2에 있다면, 공통 값만 저장하는 리스트에 저장
void main() {
  List<int> list1 = [1, 2, 3, 4];
  List<int> list2 = [3, 4, 5, 6];

  List<int> common = [];

  for (var item in list1) {
    if (list2.contains(item)) {
      common.add(item);
    }
  }

  print(common);
}

Output:

[3, 4]