S-JIS[2011-02-13/2016-10-10] �ύX����

Scala�R���N�V����

Scala���R���N�V�����i�v�f�̕��сE�W���E�O���[�v�j�̃����B


�T�v

Scala�̃R���N�V�����͕s�ρi�C�~���[�^�u���Eimmutable�j�Ȃ��̂Ɖ•ρi�~���[�^�u���Emutable�j�Ȃ��̂�����A��{�I�ɂ͕s�ςȕ����g�p����̂�Scala�̕��j�B
���̕s�ςȃN���X�̓f�t�H���g�Ŏg����iPredef���ʖ��itype�j����`����Ă���j�̂ɑ΂��A�•ςȕ��͎������C���|�[�g���Ȃ��Ǝg���Ȃ��悤�ɂȂ��Ă���B
�i�S�R�֌W�Ȃ����A�~���[�^���g�ƌ����Ή������E�ψفE�ς���Ă��܂������́j

Java�ł͑�\�I�ȃR���N�V������List�EMap�ESet���Ǝv�����AScala�ł�Seq�EMap�ESet�ƂȂ��Ă���悤���B
�iScala��List��Seq����h��������j

Scala�̃R���N�V�����ɂ��R���N�V�����𑀍삷��ׂ̃��\�b�h�������ς�����B
Java�̃R���N�V�������상�\�b�h�Ƃ͂��Ȃ�قȂ��Ă���A���Ԃ�֐��^����炵���\���E�����Ȃ̂��Ǝv���B

�R���N�V�����ɂ‚��Ă͈ȉ��̃T�C�g�����ɎQ�l�ɂȂ�܂��B
�i�Q�l�ɂȂ�Ƃ������AScala 2.8 �R���N�V����API�͕K���j

Scala 2.8 �R���N�V���� API eed3si9n���񂪁uThe Scala 2.8 Collections API�v��|�󂵂����́B
Scala 2.8 �R���N�V����API ������񂪁uThe Scala 2.8 Collections API�v��|�󂵂����́B
Scala �R���N�V�����̃A�[�L�e�N�`�� eed3si9n���񂪁uThe Architecture of Scala Collections�v��|�󂵂����́B

Scala2.9�ł́A�}���`�X���b�h�ŕ���Ŏ��s�ł�������R���N�V�������V�݂��ꂽ�B[2011-09-18]


�R���N�V�����̎��

eed3si9n������•σR���N�V��������ѕs�σR���N�V�����̉��̕��ɏo�Ă���h���֌W�̐}�����ɕ�����Ղ��B
�܂��A���ۂɂǂ̃N���X���g���ׂ����ɂ‚��ẮA��Ƃ�������\�����̕\�����ɎQ�l�ɂȂ�B

�C�~���[�^�u���i�s�ρj�ȃR���N�V������scala.collection.immutable�p�b�P�[�W�ɂ���B
�~���[�^�u���i�•ρj�ȃR���N�V������scala.collection.mutable�p�b�P�[�W�ɂ���B

�g���C�g �s�� �•� Java���� ���l
Traversable �@ �@ �@ �T���”\�g���C�g�B�S�ẴR���N�V�����̐e�g���C�g�B
���̃g���C�g�ł�foreach�݂̂����ۃ��\�b�h��
����ȊO��TraversableLike�Œ�`����Ă���B
Iterable �@ �@ �@ �J��Ԃ��”\�g���C�g�B
Iterable��Traversable�́i�B��́j���n�ł���A
Iterable�̒�����Seq�EMap�ESet������B
Gen�` �@ �@ �@ Scala2.9�ł�����R���N�V�������������B[2011-09-18]
���ׁ̈A�u�ʏ�̃R���N�V�����v�Ɓu����R���N�V�����v�̋��ʕ����Ƃ��āAGen�Ŏn�܂�g���C�g���o�����悤���B
Par�` �@ �@ �@ Scala2.9������R���N�V������Par�Ŏn�܂�g���C�g�ɂȂ��Ă���B[2011-09-18]
Seq �@ �@ �@ �@ ���Ԃɕ���ł���R���N�V�����B
IndexedSeq �@ WrappedArray
ArraySeq
�z�� �z��iArray�j
String StringBuilder String�EStringBuilder ������
Range �@ �@ for���́u1 to 10�v�Ƃ��u0 until 10�v�Ƃ��ł悭�g����B
Int�ŊJ�n�l�E�I���l�i�͈́j�����ێ�����B
NumericRange �@ �@ Range�̔ėp�ŁBLong��BigInt�EBigDecimal���Ŏg���B
�u'A' to 'Z'�v��NumericRange[Char]�A
�u1L to 10�v��NumericRange[Long]������B[/2011-03-23]
Vector �@ �@ Scala2.8�œ������ꂽ�R���N�V�����B
�؍\���i1�m�[�h��32�v�f�j�ŗv�f��ێ�����B[/2016-06-18]
LinearSeq List LinkedList
DoubleLinkedList
MutableList
List
LinkedList
���X�g
Stream �@ �@ �����ɑ����l�Q���Ӗ�����R���N�V�����B
Queue Queue
SynchronizedQueue
PriorityQueue
SynchronizedPriorityQueue
Queue �L���[
Stack Stack
SynchronizedStack
ArrayStack
Stack �X�^�b�N
Buffer �@ ArrayBuffer �@ �z���ɕϊ����₷��Buffer�B�v�f�̒lj����o����B
�@ ListBuffer �@ List�ɕϊ����₷��Buffer
�@ SynchronizedBuffer �@ �@
Map �@ �@ �@ Map �L�[�����ɒl���擾����R���N�V�����B
�@ HashMap HashMap HashMap �@
ListMap ListMap �@ �@
�@ LinkedHashMap LinkedHashMap �@
�@ WeakHashMap WeakHashMap ��Q�ƃn�b�V���}�b�v�B
�@ OpenHashMap �@ �@
�@ MultiMap �@ �@
�@ ConcurrentMap �@ �@
�@ SynchronizedMap �@ �@
SortedMap TreeMap �@ SortedMap�ETreeMap �@
�@ �@ TrieMap 2.10 �@ [2013-06-08]
Set �@ �@ �@ Set �l�����݂��Ă��邩�ǂ�����ێ�����R���N�V�����i�W���j�B
�@ HashSet HashSet HashSet �@
BitSet BitSet BitSet �@
ListSet �@ �@ �@
�@ LinkedHashSet �@ �@
SortedSet TreeSet �@ SortedSet�ETreeSet �@

�R���N�V�����̐���

�R���N�V�����̃C���X�^���X�𐶐�����ɂ́A�R���N�V�����N���X���R���p�j�I���I�u�W�F�N�g�i��apply()���\�b�h�j���g�p����B

val l = List("a", "b", "c")
val m = Map("a" -> 123, "b" -> 456, "c" -> 789)
val s = Set("a", "b", "c")

�•σR���N�V�������g���ɂ̓N���X���C���|�[�g����K�v������B
�s�σN���X�Ɖ•σN���X�Ŗ��O�����Ԃ�N���X�i�g���C�g�E�I�u�W�F�N�g�j������̂ŁA�ʖ���t����Ɨǂ��B

import scala.collection.mutable.{ ListBuffer, Map=>MMap, Set=>MSet }
val l = ListBuffer("a", "b", "c")
val m = MMap("a" -> 123, "b" -> 456, "c" -> 789)
val s = MSet("a", "b", "c")

��i�v�f����0�j�̃R���N�V�����́A�R���p�j�I���I�u�W�F�N�g�i��apply���\�b�h�j�̈�����0�‚ɂ��鑼�ɁA
�R���p�j�I���I�u�W�F�N�g��empty���\�b�h�ł��擾�ł���B[2011-02-17]

  val list = List[Int]()
  val list = List.empty[Int]
  val list:List[Int] = List()
  val list:List[Int] = List.empty
�~val list = List(1,2,3).empty

Seq�̏ꍇ�A�����l�ŏ���������fill��l��͈́i�J�n�l�E�I���l�j�Ŏw�肷��range���A���ɂ����������\�b�h������B[2011-02-17]

��Seq�̏��������\�b�h


Map��Set�̕s�σI�u�W�F�N�g�̏ꍇ�A���������_�ŗv�f����������i�ォ��ς�邱�Ƃ������j�ׁA�v�f���ɉ����Č����̗ǂ��N���X���g�p�����B
�Ⴆ��Scala2.8��Map�̏ꍇ�A�ȉ��̂悤�ɂȂ��Ă���B

�v�f�� ���ۂ̋�ۃN���X
1 scala.collection.immutable.Map$Map1
2 scala.collection.immutable.Map$Map2
3 scala.collection.immutable.Map$Map3
4 scala.collection.immutable.Map$Map4
5 scala.collection.immutable.HashMap$HashTrieMap

�v�f��1�`4��Map�ł́Aget���\�b�h�̎��̂�if���̗���ŃL�[�𔻒肵�Ă���B
����́A�v�f�������Ȃ��Ȃ�A����ɓ����\���i�z��Ƃ����X�g�Ƃ��j�������Č��������荂�������炾�낤�B
�i�Q�l��Java�̏ꍇ�A�v�f�������Ȃ��Ȃ�Map#containsKey()���List#contains()�̕��������j

�������AMap1�ŃL�[��lj������Map2���Ԃ邵�AMap2����L�[���폜�����Map1���Ԃ�悤�ɂ����ƘA�����Ă���B


Scala�ڎ��֖߂� / �Z�p�����֖߂�
���[���̑��M��F�Ђ�����

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@

�@