{"id":21040379,"url":"https://github.com/martindevans/handycollections","last_synced_at":"2025-06-10T08:04:23.182Z","repository":{"id":7512554,"uuid":"8862839","full_name":"martindevans/HandyCollections","owner":"martindevans","description":"A set of useful collections written in C#","archived":false,"fork":false,"pushed_at":"2021-06-03T01:36:48.000Z","size":158,"stargazers_count":9,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-10T08:03:10.539Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/martindevans.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-03-18T19:58:48.000Z","updated_at":"2024-07-17T08:18:40.000Z","dependencies_parsed_at":"2022-09-22T13:20:28.007Z","dependency_job_id":null,"html_url":"https://github.com/martindevans/HandyCollections","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martindevans%2FHandyCollections","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martindevans%2FHandyCollections/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martindevans%2FHandyCollections/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martindevans%2FHandyCollections/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martindevans","download_url":"https://codeload.github.com/martindevans/HandyCollections/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martindevans%2FHandyCollections/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259033829,"owners_count":22795769,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T13:46:16.900Z","updated_at":"2025-06-10T08:04:23.160Z","avatar_url":"https://github.com/martindevans.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"### HandyCollections\n\nA convenient set of generic collections for C#\n\nThis project is in active use by myself and I will respond rapidly to bug reports and pull requests.\n\n#### BinaryTree.BinaryTree\nA binary tree for quickly storing and retrieving items in O(Log N) time. Values are stored with a key, the same key can be used to retrieve the item (internally using a binary search on the key).\n\n#### BinaryTree.SplayTree\nA more advanced binary tree which automatically reorders itself to place recently accessed items nearer the root. If you expect your access pattern frequently use the same keys a splay tree should improve your performance (it's still O(Log N), but the constants for accessing near the root are smaller).\n\n#### BloomFilter.BloomFilter\nA set of items which can have items added and supports queries asking if an item has been added to the set. Queries are probabilistic - sometimes it will return false positives (but never false negatives). However, a bloom filter can be many times smaller and faster than a completely accurate set - see [wikipedia](http://en.wikipedia.org/wiki/Bloom_filter) for a more in depth explanation of bloom filters.\n\n#### BloomFilter.CountingBloomFilter\nA bloom filter which supports removing items.\n\n#### BloomFilter.ScalableBloomFilter\nA bloom filter which expands as more items are added to it, ensuring that the probability of a false positive never exceeds some threshold.\n\n#### Geometry.Octree\nAn 8-way tree which represents a cuboid of 3 dimensional space. Items can be added with cuboid volume keys and the octree can then answer queries about which items overlap certain volumes.\n\n#### Geometry.Octree\nAn 4-way tree which represents a rectangle of 2 dimensional space. Items can be added with rectangle area keys and the quadtree can then answer queries about which items overlap certain areas.\n\n#### Heap.MinHeap\nA collection of items which makes accessing the smallest item in the collection very fast, often used as a priority queue. Inserting and deleting items can be done in O(Log N) time, while finding the smallest is O(1).\n\n#### Heap.MinMaxHeap\n*Currently commented out due to some bugs and no known users!*\n\nA heap which makes accessing both min and max O(1). Insertion and deletion remain unchanged (except slightly higher constants).\n\n#### RandomNumber.LinearFeedbackShiftRegister16\nA random number generator which shuffles all 16 bit numbers and returns them in sequence. This guarantees no repeats until the sequence begins again (and then repeats itself perfectly).\n\n#### RandomNumber.LinearFeedbackShiftRegister32\nA random number generator which shuffles all 32 bit numbers and returns them in sequence. This guarantees no repeats until the sequence begins again (and then repeats itself perfectly).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartindevans%2Fhandycollections","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartindevans%2Fhandycollections","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartindevans%2Fhandycollections/lists"}