모음집이 두 개 있습니다. a
은 class C
의 스칼라 개체 시퀀스입니다. b
은 일련의 문자열입니다. C
의 문자열 필드는 name
이며 b
의 항목과 일치 할 수 있습니다. 내가 원하는 것은 a
을 반복하고 b
의 항목 중 하나와 일치하는 c.name
을 모두 찾습니다. 스칼라에서 어떻게해야합니까?스칼라 컬렉션 2 개를 반복하고 일치 항목을 찾습니다.
1
A
답변
4
a와 b를 반복하면 값이 커질 수 있습니다. 왜냐하면 다른 루프 안에 중첩 된 하나의 루프가 O (n^2) 시간을 산출하기 때문입니다. b가 충분히 큰 경우, 이것을 먼저 O (n)으로 가져 오기 위해 Set으로 만들고 싶을 것입니다. 내가으로이 글을 읽을 것이다
val bSet = b.toSet;
a.filter(c => b.contains(c.name))
의 "에 다음 필터를 적용 : A의 C 각 항목에 대해, 그것을 포함 결과와 경우에만 C의 이름이 B의 경우."
1
다음은 yield가있는 루프에 해당합니다.
for(c <- a if b.contains(c.name)) yield c.name
관련 문제
- 1. 백본 - 컬렉션 2 개를 병합 하시겠습니까?
- 2. ObservableCollection 참조 동등 물에서 일치 항목을 찾습니다.
- 3. JPA에서 같은 유형의 컬렉션 2 개를 얻는 방법?
- 4. 알고리즘을 검색하여 "일치"를 찾습니다
- 5. 두 테이블을 비교하고 ms 액세스 2007에서 일치 항목을 찾습니다.
- 6. dom 객체의 배열을 통해 루프하고 일치 항목을 먼저 찾습니다.
- 7. 객체를 통해 반복하고 not null 속성을 찾습니다.
- 8. android는 xml의 객체를 반복하고 유형을 찾습니다.
- 9. 필터의 스칼라 컬렉션 유형
- 10. 스칼라 미래의 가비지 컬렉션
- 11. 확장 스칼라 컬렉션
- 12. 스칼라 컬렉션 입력
- 13. 스칼라 일치 오류
- 14. 스칼라 "일치"도움말
- 15. 스칼라 일치 변수 전달
- 16. 스칼라 RegexParsers에서 욕심없는 일치
- 17. 스칼라 반복자의 항목을 사용합니다.
- 18. 벡터를 반복하고 특정 항목을 제거하십시오.
- 19. SQL : 중복 된 테이블 2 개를 비교하십시오.
- 20. 스칼라 2.9와 액터의 병렬 컬렉션
- 21. Cakephp 2.x는 관련 모델의 첫 번째 항목을 찾습니다
- 22. 오일러 2. 메서드 2 개를 호출하는 방법?
- 23. 외래 키 일치 여러 행을 찾습니다
- 24. ActiveRecord는?()가 일치 할 때를 찾습니다.
- 25. 배열을 반복하고 데이터베이스에서 일치 항목 검색
- 26. 스칼라 : 가장 좋은 방법은 수집을 반복하고 여기에 배열
- 27. 스칼라 패턴 일치 빠른 참조
- 28. 스칼라 일치/비교 열거 형
- 29. 정규식 일치 2 건
- 30. Mongo : 특정 필드가없는 항목을 찾습니다.
내 친구는 록 스타입니다! 고맙습니다. – Bob
b가 충분히 큰 경우 먼저 Set으로 설정하려고합니다 (예 : ). bSet = b.toSet; a.filter (c => b.contains (c.name)) –
제안에 감사드립니다. Alex가 먼저 세트로 만들고 왜 충분히 커야할까요? – Bob