2016-06-01 5 views
3

설명서에서 "MoveIteratorFactory"의 목적은 모든 단계에서 재생해야 할 필요가있는 동작을 생성하는 것입니다.MoveIteratorFactory 용도

"getSize"방법은 이동의 하위 집합의 크기가 커지나요?

"createOriginalMoveIterator"와 "createRandomMoveIterator"의 차이점은 무엇입니까?

"createOriginalMoveIterator"는 이후 단계에서 이동 하위 집합을 다시 생성 할 것인가 말 것인가?

두 경우 모두 next() 메서드가 호출 된 후 (해당 생성 후) 이동이 실행 된 것 같습니까?

많은 경우에 생성해야 할 움직임이있는 경우 가장 좋은 해결책입니까? 내 경우에는 처음 생성 될 필요가있는 많은 움직임이 있기 때문에 재생할 수 있습니까?

솔루션의 현재 상태를 기반으로하는 모든 단계에서 사용자 지정 결합 된 동작을 생성하는 더 좋은 방법이 있습니까?

답변

2

MoveIteratorFactoryMoveListFactory보다 복잡한 대안으로, 대신 Iterator<Move>을 생성하여 List<Move>을 생성하지 않아도됩니다. Java 8 용어에서는 Stream과 공통점이 많습니다.

엔티티가 50k 개이고 값이 10k 개인 경우를 가정 해보십시오. 모든 changemoves 목록에는 500m 요소가 포함되어있어 메모리 문제가 발생하고 단계가 시작될 때마다 심각한 지연 손실이 발생합니다. 이를 피하기 위해 시간의 바로 가기 Iterator.next() 또는 hasNext()으로 생성합니다.

반복자가 무작위로 이동을 선택해야 할 경우 (= 동일한 이동을 두 번 선택할 수도 있고, 임의로 이동하지 않을 수도 있습니다.) 또는 원래 순서 일 때 다르게 동작해야합니다.

+0

"동일한 이동을 두 번 선택할 수 있습니다"라는 것은 무엇을 의미합니까? 같은 단계에 두 번? –

0

엔티티가 50,000 개이고 값이 10k 개인 경우를 가정 해 보겠습니다. 모든 changemoves 목록에는 500m 요소가 포함되어있어 메모리 문제가 발생하고 단계가 시작될 때마다 심각한 지연 손실이 발생합니다. 이를 피하기 위해 Iterator.next() 또는 hasNext()에서 changemove를 바로 생성합니다.