• Skip to main content
  • Skip to footer
  • Home
  • Become An Aficionado (Join Our Mailing List)
BMA

BeMyAficionado

Inspire Affection

Ad example

Simple Shopping Cart Project in JAVA using Collections

September 9, 2016 by varunshrivastava 13 Comments

If you have read my previous article which solely focuses on getting you started with the JAVA Collections framework then it’s time to dig a little deeper and create a Shopping Cart application to demonstrate the use of Collections in a real-world application.

I have chosen Shopping Cart application for this purpose because I found it perfect for implementing collections in this application.

Shopping Cart application will help you in modelling real-world entities into code.

Table of Contents

  • Project Structure
  • Classes Used
    • Product.java
    • Products.java
    • Cart.java
    • UI.java
    • Main.java
  • Conclusion

Project Structure

  1. Create a new Java Project with whatever name you like.
  2. Create the following package under your src folder,
    • collections.shoppingcart
  3. For simplicity, all of the code will reside inside this package.

Classes Used

  • Product.java
  • Products.java
  • Cart.java
  • UI.java
  • Main.java

For this example project, make sure all of the above-mentioned classes resides under the same package, i.e, collections.shoppingcart.

I will take each class one by one and explain the significance of it.

Product.java

Go through the code below,

This is a concrete class which contains Product properties and provides setters and getters for it. I have also override the Hash and Equals method.

  • equals()method is used to compare two objects based on their properties.
  • hashCode()is a unique hash/number attached to every object whenever the object is created.

So whenever two objects are compared. Their hash code and properties are compared. If both (hash code & properties value) are same then the object is considered equal otherwise not equal.

Therefore, it is very important to override hascode() and equals() method of an object.

Following is a very well explained answer that tells you the importance of overriding hashcode and equals for object comparison.

  • Why do I need to Override equals and hashCode method in Java?

Products.java

Go through the code below,

The role of this class in your Shopping Cart Application is to provide you with the store products.

In other words, this class is used to initialize your store as soon as the application is started. In real-world application, the items will be retrieved from user session or database. For simplicity, I’m using Products class to initialize objects.

As you can see, theinitStoreItems()method is used to add the products into a new ArrayList of type Product.

If you have read my previous article on Understanding Collections in JAVA then you will be familiar with the Generic Collection.

As we have provided the Product class inside the <> braces as new ArrayList(), this will tell the compiler that the list is of type Product and it can only contain an item which belongs to type Product.

Cool.

You are half way there.

Cart.java

This is a concrete class which act as a virtual cart to store the items temporarily.

It provides all the required operations a cart should have such as:

  • addToCart()
  • removeFromCart()
  • getProduct(), etc…

It also maintains a cartItems list with a type Product, similar to the products list in products class.

The sole purpose of cartItemslist is to store the purchased item in the cart or remove the item from the cart. It simply maintains the list of items which are added to the cart by the user.

UI.java

In the web application, you will have a nice looking HTML page with Javascript support. So the user will simply look for the product and click on the Add To Cart button.

In the console application (like this one), UI parts become a bit trickier. But, I’ve got a really cool way to make it easy.

Look:

In the console, a user can input only one input at a time. This is the key concept and could be used to make the UI easy.

People often take different input variables for different inputs. That could become a headache if there are tons of input to process.

That is why the simplest approach is to go with a single input variable and process it as soon as it gets populated.

In this application, I have used a single class variable to take user input. And based on the input value respective process will be executed.

Go through the code below and understand the concept.

This is the class where the main interaction between the user and application takes place.

It is the control point of the application.

Everything that you see in the console is a result of this page.

It takes the user input and calls the respective methods from the classes you made earlier to perform the required task.

Take a look at the code and come back if you have any question. I’m always here to answer.

Main.java

This is simply the starting point for the application.

It calls the constructor of UI() from the main method which takes care of bootstrapping the entire application.

Conclusion

Your Shopping Cart application is fully working at this point in time.

I hope the use of the collection is clear. If there is any doubt or problem then you may contact me directly by commenting below.

For simplicity, I have only used ArrayList, however, you may use any other data structure as per the need of the application. I suggest you follow the KISS principle every time you are given a project.

Let me know if you need to learn any other application from real world. I would be more than happy to do it.

Related

Filed Under: Programming Tagged With: cart, collections, java, java programming, kiss, program, shopping cart

Footer

Become an Aficionado

BeMyAficionado is all about helping you connect, grow, and make an impact—one idea at a time.

Join our mailing list for exclusive how-to guides, insider stories, and free e-books.

Get first access to new posts, tools and resources we only share with subscribers.

Join 874 other subscribers

Recent

  • Is The Cosmos a Vast Computation?
  • Building Semantic Search for E-commerce Using Product Embeddings and OpenSearch
  • Leader Election with ZooKeeper: Simplifying Distributed Systems Management
  • AWS Serverless Event Driven Data Ingestion from Multiple and Diverse Sources
  • A Step-by-Step Guide to Deploy a Static Website with CloudFront and S3 Using CDK Behind A Custom Domain

Search

Tags

Affordable Hosting algorithms amazon aoc-2020 believe in yourself best database earn money blogging education elementary sorting algorithms experience fashion finance Financial Freedom food friends goals google india indian cuisine indian education system java life life changing love make money microservices motivation oops podcast poor education system principles of microservices problem-solving programmer programming python reality seo spring success success factor technology top 5 typescript wordpress

Copyright © 2025 · Be My Aficionado · Log in

Go to mobile version