2012-01-27 6 views
2

이것은 나에게 틀린 것 같습니다 - 왜 요소의 순서가 그들이 만들어진 순서에서 변경 되었습니까?주문한 xml 요소를 스칼라로 만드는 방법은 무엇입니까?

scala> var list = collection.immutable.TreeSet(1, 3, 2, 5, 0) 
list: scala.collection.immutable.TreeSet[Int] = TreeSet(0, 1, 2, 3, 5) 

scala> var xml = <list>{ list.map(number => { <number>{number}</number> }) }</list> 
xml: scala.xml.Elem = <list><number>3</number><number>1</number><number>2</number><number>5</number><number>0</number></list> 

scala> var xml = <list>{ list.map(number => { println(number); <number>{number}</number> }) }</list> 
0 
1 
2 
3 
5 
xml: scala.xml.Elem = <list><number>3</number><number>1</number><number>2</number><number>5</number><number>0</number></list> 

답변

2

TreeSet으로 매핑하면 새로운 세트가 만들어집니다. 그 새로운 요소는 정수가 아니므로 정수에 자연 순서를 사용하지 않습니다. 사실 Elem에 대한 자연 주문이 없으므로 새로운 세트는 순서가 지정되지 않습니다. 찾고있는 주문을 얻을 수 있습니다.

var xml = <list>{ list.toSeq map (n => <number>{n}</number>) }</list> 
+0

아, 알겠습니다. 감사! –

+0

사실, 결과에 대해 'Ordering'이 없으므로 새로운'TreeSet'을 생성했는지 의심 스럽습니다. 아마도'Set'으로 내려 갔을 것이고, 기본값은'HashSet'입니다. –

+0

당신 말이 맞아요. 수정 됨. –

관련 문제