SortedSet.st
author Claus Gittinger <cg@exept.de>
Sun, 30 Sep 2018 15:56:10 +0200
changeset 4745 8e46bdaeb066
parent 4248 998a831e6c9d
child 4799 bf18e2754b1e
child 5477 11c625b9ecca
permissions -rw-r--r--
initial checkin class: Base64UrlCoder class: Base64UrlCoder class added: #documentation #examples #initializeMappings #mapping #reverseMapping
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2789
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 2012 by eXept Software AG
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
              All Rights Reserved
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic2' }"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
4248
998a831e6c9d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 3438
diff changeset
    14
"{ NameSpace: Smalltalk }"
998a831e6c9d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 3438
diff changeset
    15
2789
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
OrderedSet subclass:#SortedSet
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	instanceVariableNames:''
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'Collections-Sequenceable'
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!SortedSet class methodsFor:'documentation'!
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
copyright
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
 COPYRIGHT (c) 2012 by eXept Software AG
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
              All Rights Reserved
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 This software is furnished under a license and may be used
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 only in accordance with the terms of that license and with the
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 hereby transferred.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
!
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
documentation
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    I am a subclass of Set whose elements are ordered in a
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    similar fashion to SortedCollection.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    That is, I have both Set behavior (only keeping a single instance of
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    an element) but I also remember the sort order.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    I have one additional instance variable:
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    order <SortedCollection>        Sorted collection of values reflecting the order 
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
                                    in the set. 
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
2790
216dece3910c changed: #documentation
Claus Gittinger <cg@exept.de>
parents: 2789
diff changeset
    51
    [caveat:]
216dece3910c changed: #documentation
Claus Gittinger <cg@exept.de>
parents: 2789
diff changeset
    52
        a tree may be a better choice, 
216dece3910c changed: #documentation
Claus Gittinger <cg@exept.de>
parents: 2789
diff changeset
    53
        as although the set shows O(1) behavior when adding,
216dece3910c changed: #documentation
Claus Gittinger <cg@exept.de>
parents: 2789
diff changeset
    54
        the sortedCollection does not (especially as inserting is expensive). 
216dece3910c changed: #documentation
Claus Gittinger <cg@exept.de>
parents: 2789
diff changeset
    55
        A balanced tree would show O(lg n) behavior.
216dece3910c changed: #documentation
Claus Gittinger <cg@exept.de>
parents: 2789
diff changeset
    56
2789
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    [author:]
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
        Claus Gittinger
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    [see also:]
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
        OrderedCollection 
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
        Dictionary OrderedDictionary
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
        Set Bag
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
!
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
examples
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
                                                                    [exBegin]
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
        |s|
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
        s := SortedSet new.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
        s add:'one'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
        s add:'two'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
        s add:'one'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
        s add:'two'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
        s add:'three'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
        s size.         
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
        s do:[:each | Transcript showCR:each].         
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
                                                                    [exEnd]
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
                                                                    [exBegin]
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
        |s|
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
        s := SortedSet new.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
        s add:'one'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
        s add:'two'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
        s add:'one'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
        s add:'two'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
        s add:'three'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
        s remove:'one'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
        s size.         
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
        s do:[:each | Transcript showCR:each].         
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
                                                                    [exEnd]
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
                                                                    [exBegin]
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
        |s|
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
        s := SortedSet new.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
        s add:'one'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
        s add:'two'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
        s add:'three'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
        s add:'one'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
        s add:'two'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
        s add:'three'.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
        s size.         
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
        Transcript showCR:s.         
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
        s removeFirst.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
        Transcript showCR:s.         
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
        s removeFirst.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
        Transcript showCR:s.         
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
        s removeFirst.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
        Transcript showCR:s.         
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
                                                                    [exEnd]
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
! !
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
!SortedSet class methodsFor:'instance creation'!
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
sortBlock:aBlock
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    "return a new sortedSet, whe the sort order is defined by aBlock.
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
     This must be a two-argument block which returns true if its arg1 has to come before
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
     its arg2 in the collection."
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    ^ self new setSortBlock:aBlock
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    "Created: / 06-08-2012 / 12:34:29 / cg"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
! !
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
3438
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   131
!SortedSet methodsFor:'accessing'!
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   132
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   133
sortBlock
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   134
    ^ order sortBlock
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   135
! !
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   136
2789
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
!SortedSet methodsFor:'adding & removing'!
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
addFirst:anObject 
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    "blocked; only the sort order determines the order"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    self shouldNotImplement
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    "Modified: / 06-08-2012 / 12:37:23 / cg"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
!
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
addLast:anObject 
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    "blocked; only the sort order determines the order"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    self shouldNotImplement
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    "Modified: / 06-08-2012 / 12:37:30 / cg"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
! !
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
3438
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   155
!SortedSet methodsFor:'enumerating'!
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   156
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   157
collect:aBlock
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   158
    "for each element in the receiver, evaluate the argument, aBlock
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   159
     and return a new collection with the results"
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   160
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   161
    |newCollection|
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   162
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   163
    newCollection := self speciesForAdding new.
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   164
    newCollection setSortBlock:self sortBlock.
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   165
    self do:[:element | newCollection add:(aBlock value:element)].
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   166
    ^ newCollection
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   167
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   168
    "
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   169
     #(1 2 3 4) collect:[:e | e odd]   
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   170
     (1 to:10) collect:[:e | e even]     
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   171
    "
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   172
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   173
    "Modified: / 07-08-2010 / 16:26:40 / cg"
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   174
!
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   175
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   176
select:aBlock
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   177
    "return a new collection with all elements from the receiver, for which
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   178
     the argument aBlock evaluates to true.
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   179
     See also: #removeAllFoundIn: and #removeAllSuchThat:"
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   180
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   181
    |newCollection|
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   182
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   183
    newCollection := self speciesForAdding new.
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   184
    newCollection setSortBlock:self sortBlock.
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   185
    self do:[:each |
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   186
        (aBlock value:each) ifTrue:[newCollection add:each].
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   187
    ].
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   188
    ^ newCollection
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   189
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   190
    "
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   191
     #(1 2 3 4) select:[:e | e odd]   
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   192
     (1 to:10) select:[:e | e even]     
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   193
    "
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   194
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   195
    "Modified: / 07-08-2010 / 16:26:40 / cg"
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   196
! !
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   197
2789
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
!SortedSet methodsFor:'initialization'!
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
4248
998a831e6c9d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 3438
diff changeset
   200
initializeOrder:anInteger
998a831e6c9d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 3438
diff changeset
   201
    order := SortedCollection new:anInteger
2789
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    "Created: / 06-08-2012 / 12:33:31 / cg"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
!
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
setSortBlock:aBlock
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
    order sortBlock:aBlock
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
    "Created: / 06-08-2012 / 12:35:07 / cg"
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
! !
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
!SortedSet class methodsFor:'documentation'!
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
version
4248
998a831e6c9d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 3438
diff changeset
   215
    ^ '$Header$'
2789
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
!
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
version_CVS
4248
998a831e6c9d #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 3438
diff changeset
   219
    ^ '$Header$'
2789
03a6b4291b77 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
! !
3438
01ea6db95b58 class: SortedSet
Stefan Vogel <sv@exept.de>
parents: 2790
diff changeset
   221