TestsTested | ✓ |
LangLanguage | SwiftSwift |
License | MIT |
ReleasedLast Release | Dec 2016 |
SwiftSwift Version | 3.0 |
SPMSupports SPM | ✓ |
Maintained by Mauricio Santos.
Swift Collections Library
Buckets is a complete, tested and documented collections library for swift.
Swift 3.0+ platforms such as:
Linux/iOS 9.0+/MacOS 10.10+/watchOS 2.0+/tvOS 9.0+
See Swift Package Manager documentation
You can also integrate Buckets into your Xcode project manually:
Buckets
folder, and drag Buckets.xcodeproj
into the file navigator of your app project. This means inside your project, not at the top level.Buckets.framework
.+
button at the top left of the panel and select “New Copy Files Phase”. Set the “Destination” to “Frameworks”, and add Buckets.framework
. There are 4 versions for each platform. Select the right one.All collection types are implemented as structures. This means they are copied when they are assigned to a new constant or variable, or when they are passed to a function or method.
You shouldn’t worry about copying structs:
The behavior you see in your code will always be as if a copy took place. However, Swift only performs an actual copy behind the scenes when it is absolutely necessary to do so. Swift manages all value copying to ensure optimal performance, and you should not avoid assignment to try to preempt this optimization.
Buckets collection types are optimized in the same way.
import Buckets
var queue = Queue<String>()
queue.enqueue("first")
queue.enqueue("last")
queue.dequeue() // "first"
var deque = Deque<String>()
deque.enqueueLast("last")
deque.enqueueFirst("first")
deque.dequeueFirst() // "first"
var stack = Stack<String>()
stack.push("first")
stack.push("last")
stack.pop() // "last"
var pQueue = PriorityQueue<Int>(sortedBy: <)
pQueue.enqueue(3)
pQueue.enqueue(1)
pQueue.enqueue(2)
pQueue.dequeue() // 1
var multiset = Multiset<String>()
multiset.insert("a")
multiset.insert("b")
multiset.insert("a")
multiset.distinctCount // 2
multiset.count("a") // 2
var multimap = Multimap<String, Int>()
multimap.insertValue(1, forKey: "a")
multimap.insertValue(5, forKey: "a")
multimap["a"] // [1, 5]
var bimap = Bimap<String, Int>()
bimap[key: "a"] = 1
bimap[value: 3] = "b"
bimap[value: 1] // "a"
bimap[key: "b"] // 3
var graph = Graph<String, Int>()
graph["Boston", "NY"] = 5
graph["NY", "Miami"] = 5
graph.pathFrom("Boston", to: "Miami") // ["Boston", "NY", "Miami"]
var sss = String("hola");
var matrix: Matrix<Double> = [[1,2,3], [4,5,6]]
matrix[1, 0] = 5
matrix - [[1,0,1], [1,0,1]] // [[0,2,2],[4,5,5]]
var bitArray: BitArray = [true, false]
bitArray.append(true)
bitArray.cardinality // 2
var circArray = CircularArray<Int>()
circArray.append(1)
circArray.prepend(2)
circArray.first // 2
var bFilter = BloomFilter<String>(expectedCount: 100)
bFilter.insert("a")
bFilter.contains("a") // true
Read the documentation.
Mauricio Santos, [email protected]