{"id":31755595,"url":"https://github.com/brendanddev/collections-from-scratch","last_synced_at":"2025-10-09T18:54:45.025Z","repository":{"id":311310226,"uuid":"1043296884","full_name":"brendanddev/collections-from-scratch","owner":"brendanddev","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-23T15:59:53.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-24T05:37:20.584Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","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/brendanddev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-23T14:58:36.000Z","updated_at":"2025-08-23T15:59:56.000Z","dependencies_parsed_at":"2025-08-24T06:49:30.393Z","dependency_job_id":"4e92d7aa-5c0f-4c05-9433-94c99c797c9b","html_url":"https://github.com/brendanddev/collections-from-scratch","commit_stats":null,"previous_names":["brendanddev/collections-from-scratch"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/brendanddev/collections-from-scratch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanddev%2Fcollections-from-scratch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanddev%2Fcollections-from-scratch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanddev%2Fcollections-from-scratch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanddev%2Fcollections-from-scratch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brendanddev","download_url":"https://codeload.github.com/brendanddev/collections-from-scratch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brendanddev%2Fcollections-from-scratch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001867,"owners_count":26083226,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2025-10-09T18:54:39.933Z","updated_at":"2025-10-09T18:54:45.020Z","avatar_url":"https://github.com/brendanddev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Collections From Scratch\n\nThis project explores **Data Structures and Collections in Java** by implementing them from scratch, without using the Java Collections Framework (JCF).\n\n---\n\n## Overview\n\nThis repository contains implementations of common data structures such as lists, sets, maps, stacks, queues, heaps, and trees.\nEach data structure is built from first principles, including custom iterators and benchmarking utilities to compare performance.\nPerformance comparison utilities that benchmark custom data structures against Java's built-in counterparts (e.g., `PriorityQueue` for heaps, `TreeSet` for binary trees) using shuffled datasets to ensure fair testing.\n\n---\n\n## Features\n\n- Core abstractions (`CustomCollection`, `CustomIterator`)  \n- Array-based and linked implementations (`CustomArrayList`, `CustomLinkedList`)\n- Hash-based Collections (`CustomHashSet`, `CustomHashMap`)\n- Stack, Queue, and Deque implementations (`CustomStack`, `CustomQueue`, `CustomDeque`)\n- Tree structures (`CustomBinaryTree`)\n- Heap implementations (`CustomHeapList`)\n- Benchmarking utilities (`Benchmark.java`)  \n\n---\n\n## Project Structure\n\n```\nsrc/main/java/com/brendanddev/collections\n│\n├── core/ # Shared interfaces \u0026 iterators\n│ ├── CustomCollection.java\n│ └── CustomIterator.java\n│\n├── list/ # Linear data structures\n│ ├── CustomArrayList.java\n│ └── CustomLinkedList.java\n│\n├── set/ # Unique element collections\n│ └── CustomHashSet.java\n│\n├── map/ # Key-Value structures\n│ └── CustomHashMap.java\n│\n├── queue/ # FIFO \u0026 Priority queues\n│ ├── CustomQueue.java\n│ ├── CustomDeque.java\n│ └── CustomLinkedPriorityQueue.java\n│\n├── stack/ # LIFO structure\n│ └── CustomStack.java\n│\n├── heap/ # Binary heap implementations\n│ ├── CustomHeap.java\n│ └── CustomHeapList.java\n│\n├── tree/ # Hierarchical structures\n│ └── CustomBinaryTree.java\n│\n├── performance/    # Benchmarking utilities\n│   ├── Benchmark.java\n│   ├── CompareLists.java\n│   ├── CompareQueues.java\n│   ├── CompareStack.java\n│   ├── CompareHeaps.java\n│   ├── CompareMaps.java\n│   ├── CompareSets.java\n│   └── CompareTrees.java\n│\n└── Main.java # Entry point for demos/benchmarks\n```\n\n---\n\n## Usage\n\n### Running the Demos\nYou can run the `Main` class to see basic demos of your custom collections in action:\n\n```bash\nmvn compile exec:java -Dexec.mainClass=\"com.brendanddev.collections.Main\"\n```\n\nThis will compile the project and run the main entry point. You can modify Main.java to call any custom collection and test basic operations.\n\n### Running Benchmarks\n\nThe `performance` package contains benchmarking utilities to compare your custom implementations with standard Java collections. Each `Compare*.java` class runs performance tests for a specific data structure.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrendanddev%2Fcollections-from-scratch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrendanddev%2Fcollections-from-scratch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrendanddev%2Fcollections-from-scratch/lists"}