Open In App

C++ STL vs Java Collections Framework

Last Updated : 27 Nov, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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 

Parameters Containers 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>()

Vector vector<data-type> v; Vector<data-type> v =new Vector<data-type>()
Stack stack<data-type> s; Stack<data-type> s = new Stack<data-type>();  
Queue queue<data-type>q;  Queue<data-type> q = new LinkedList<>();
Dequeue deque<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>();  
Set set<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>();  
Map map<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)

STL Java 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 arrays In 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. 


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads