Project

HyperCollections

Medium
49 completions
~ 29 hours
3.9

In this project, you will develop a small collections framework for learning purposes. During this process, you will learn about the basic principles and drawbacks of the standard Java collections, as well as uncover some internals of building reusable frameworks and libraries.
It is worth noting that this project is more architectural than an algorithmic project. You will concentrate on solving plenty of complex problems related to designing clear and reusable architecture.

Provided by

JetBrains Academy JetBrains Academy

About

Java developers often face the need to store and process data conveniently. The Java Collections Framework can help with this issue, as developers usually don't need to create new collections from scratch – they only need to apply or slightly extend the existing ones to solve their needs.
However, there are some design drawbacks inherited in the Java Collections Framework, which can even lead to bugs in your programs. Some approaches used in this library are considered obsolete now and are normally avoided in modern libraries.
Besides, sometimes developers face rare issues, for which the standard collections aren't enough. In such cases, alternative libraries such as Google Guava Collections or Apache Common Collections may help. These libraries contain more collections and an abundance of auxiliary algorithms to work with. Another solution is to write your problem-specific collections. This is much more complicated and not always the best solution, but it isn't forbidden either.

Training project icon

Training project

This project allows you to practice and strengthen your coding skills, helping you get ready for more advanced tasks ahead.

What you'll learn

Once you choose a project, we'll provide you with a study plan that includes all the necessary topics from your course to get it built. Here’s what awaits you:
The standard collections framework doesn't separate immutable and mutable collection interfaces, which leads to errors in code even for experienced developers. In this stage, you will implement an Immutable Collection that will solve a few real-world problems.
In this stage, you will implement more interesting collections – BiMaps and MultiSets, which you can find in the Google Guava Framework. You will gain more knowledge on how to work on Hashed Data Structures and innovate algorithms for solving related problems.
In this stage, you will implement a new kind of Queue Data Structure – Size Limited Queue. You'll test your implementations by writing unit tests and prevent the program from working incorrectly by throwing exceptions.
In this stage, you will implement Range, which is more of a mathematical topic. You will get to know the Comparable interface and the Factory Method pattern, grasp the concept of sets, unions, intersections, and more.

Reviews

Gleb Smirnov avatar
Gleb Smirnov
3 months ago
I've studied advanced data structures and learned about range implementation
Dan Murphy avatar
Dan Murphy
5 months ago
This project offers plenty of practice with Java generics while implementing some interesting data structures.
John G Kroubalkian avatar
John G Kroubalkian
7 months ago
Ran into difficulty as it would not accept 'public class Range<C extends Comparable<C>>' so had to use 'public class Range<T extends Comparable>'

3.9

Learners who completed this project within the Java Backend Developer (Spring Boot) course rated it as follows:
Usefulness
4.2
Fun
3.9
Clarity
3.5