2010-12-06 6 views
4

주기적으로 요소를 업데이트해야하는 목록이 있습니다. 요소에는 목록에 대한 키가 없습니다 (키 위치). 또한 동적으로 성장할 것입니다. 이 방법은 목록의 특정 색인에있는 요소를 업데이트하는 좋은 방법입니까? 더 나은 알고리즘이 있습니까?얼랑 (Erlang)의 목록에있는 색인에서 요소를 대체하십시오.

List = [1,2,3,4], 
Index = 3, 
NewElement = 5, 
{HeadList, [_|TailList]} = lists:split(Index-1, List), 
[1,2,5,4] = lists:append([HeadList, [NewElement|TailList]]). 

답변

6

이 방법으로 목록을 사용하는 것은 좋지 않으므로 문제를 깔끔하게 해결하는 것과 관련이있는 것이 아니라 디자인과 관련된 것으로 생각됩니다. 아마 당신이 목록을 가지고 있다고 설명한다면?

그러나 실제로 필요한/원하는/수행해야하는 경우; 당신이하고있는 일이 맞습니다.

랜덤 액세스 작업에 ets 테이블이나 dict를 사용하는 것이 좋습니다.

+0

나는 목록을 어떻게 사용하고 있는지에 대해 조금은 알고 있지만 네 말이 맞습니다. 내 임의 액세스 요구 사항은 가장 중요한 요구 사항입니다. 다른 항목 : 입력 된 마지막 요소 (실제로는 목록의 머리글)에 언제든지 액세스하고 마지막으로 입력 한 첫 번째 목록의 통과를 쉽게 변경할 수 있습니다./dict. 해결책은 {Key, ListElem} 튜플을 만드는 것입니다. 당신의 통찰력에 감사드립니다! – MatthewToday