Skip to content
Related Articles
Open in App
Not now

Related Articles

C++ STL vs Java Collections Framework

Improve Article
Save Article
  • Difficulty Level : Basic
  • Last Updated : 27 Nov, 2022
Improve Article
Save Article

Java and C++ provide their different functionalities and their use cases. When it comes to Data structures and Algorithms Java has a special framework named Java collection framework and C++ provides a library called STL.So let’s have a look at what are the different functions, complexities, and what are similarities between both of these.

Java Collection Framework 

Java collection provides a framework to store and handle the group of objects and contains an interface named an iterable interface which provides the iterator to iterate through all the collections. A collection is an object that represents a group of objects (such as the classic Vector class). A collections framework is a unified architecture for representing and manipulating collection.

STL in C++ 

The Standard Template Library (STL) is a set of C++ template classes to provide common programming data structures and functions such as lists, stacks, arrays, etc. It is a library of container classes, algorithms, and iterators. It is a generalized library and so, its components are parameterized.

STL has 4 components:

  • Algorithms
  • Containers
  • Functions
  • Iterators

C++ provides well-designed STLs, whereas Java has Containers. So have a look at what they both contain.

Similarities and Differences Between Containers in STL  and the Collection interface in the java collection framework 

ParametersContainers in STL  Collection interface in java collection framework
 List      list<data-type> li;

ArrayList<data-type> arr=new ArrayList<data-type>()

LinkedList<data-type>LL=new LinkedList<data-type>()

Vectorvector<data-type> v;Vector<data-type> v =new Vector<data-type>()
Stackstack<data-type> s;Stack<data-type> s = new Stack<data-type>();  
Queuequeue<data-type>q; Queue<data-type> q = new LinkedList<>();
Dequeuedeque<data-type> deque;Deque<data-type>d = new ArrayDeque<data-type>();
PriorityQueue priority_queue<data-type> pq;PriorityQueue<data-type> pq=new PriorityQueue<data-type>();  
Setset<data-type> s;Set<data-type> set1 = new HashSet<data-type>();  
Set<data-type> set2 = new LinkedHashSet<data-type>();  
Set<data-type> set3 = new TreeSet<data-type>();  
Mapmap<data-type1,data-type2> mp; Map<data-type1, data-type2> map= new HashMap<data-type1, data-type2>(); 

C++ Standard Template Library (STL) vs the Java Collections Framework (JCF)

STLJava Collections Framework (JCF)
We can pass functions as parameters in C++. Not allowed in Java.
Interfaces do not exist in C++.Java depends on interfaces.
In STL, containers can contain either objects or objects of primitive types and many algorithms operate on either containers or arraysIn Java, containers contain only objects, and algorithms must be defined separately for containers and for arrays.
The algorithms are independent of the container on which they operate in STL.The algorithms are organized by the container in java.
STL includes performance as part of the interface requirements.This is not normally the case for java collections.
In STL collections, it can have pointers to objects or the objects themselves.In Java collections, it can only contain pointers to objects.
STL uses value semantics so that assignment copies a collection. Java uses reference semantics and assignment simply assigns a reference
Iterators in STL have values that can be compared.In java, iterators do not contain values that can be compared.
STL has a hierarchy of iterators which different capabilities and provides random access to container elements.Java does not provide random access iterators. It only provides Iterator and ListIterator. 
The STL framework includes a memory allocation model and STL programmers need to be aware of dealing with memory allocations.The JCF does not address either of these concerns.

Those are the major differences between STL and the java collection framework. In terms of using it in competitive programming, one can use any of them as per their convenience as it can make code look less complex and reduce your time to complete a question. 

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!