ConcurrentHashMap as an example for fail
safe iterator. It allows complete concurrency for retrievals and updates. When
there is a scenario where a high number of concurrent updates are expected then
ConcurrentHashMap can be used. This is very similar to a Hashtable but does not
lock the entire table to provide concurrency and so it is better performance
point of view. When there are high number of updates and less number of read
concurrently, then ConcurrentHashMap should be used.
Wednesday, 18 November 2015
Difference between Comparable and Comparator
A class can implement the Comparable interface to define the
natural ordering of the objects. If you take a list of Strings, generally it is
ordered by alphabetical comparisons. So when a String class is created, it can
be made to implement Comparable interface and override the compareTo method to
provide the comparison definition. We can use them as,
str1.compareTo(str2);
Now, what will you do if you want to compare two strings based on it length. We go for the Comparator. We create a class and let it implement the Comparator interface and override compare method. We can use them as,
Collections.sort(listOfStrings, comparatorObj);
str1.compareTo(str2);
Now, what will you do if you want to compare two strings based on it length. We go for the Comparator. We create a class and let it implement the Comparator interface and override compare method. We can use them as,
Collections.sort(listOfStrings, comparatorObj);
The natural ordering is up to the person
designing the classes. Comparator can be used in that scenario also and it can
be used when we need multiple sorting options. Imagine a situation where a
class is already available and we cannot modify it. In that case also,
Comparator is the choice.
What is Java Priority Queue
Java PriorityQueue is a data structure that is part of Java collections framework. It is an implementation of a Queue wherein the order of elements will be decided based on priority of each elements. A comparator can be provided in the constructor when a PriorityQueue is instantiated. That comparator will decide the sort order of elements in the PriorityQueue collection instance.
Explain Java hashCode() and equals() method.
equals() method is used to determine the equality of two Java
objects. When we have a custom class we need to override the equals() method
and provide an implementation so that it can be used to find the equality
between two instance of it. By Java specification there is a contract between
equals() and hashCode().
It says, "if two objects are equal, that is obj1.equals(obj2) is true then, obj1.hashCode() and obj2.hashCode() must return same integer".
It says, "if two objects are equal, that is obj1.equals(obj2) is true then, obj1.hashCode() and obj2.hashCode() must return same integer".
Whenever we choose to override equals(), then we
must override the hashCode() method. hashCode() is used to calculate the
position bucket and keys.
Difference between java.sql.Date() and java.util.Date()
sql date
represent only Date information (e.g. year, month, day) while util Date represent
both date and time information.
Difference b/w ConcurrentHashMap and Collections.synchronizedMap(HashMap)
The main difference between these two is that ConcurrentHashMap
will lock only portion of the data which are being updated while other portion
of data can be accessed by other threads. However,
Collections.synchronizedMap() will lock all the data while updating, other
threads can only access the data when the lock is released. If there are many
update operations and relative small amount of read operations, you should
choose ConcurrentHashMap.
Note: Collections.synchronizedMap(HashMap) is equals to Hashtable
Also one other difference is that
ConcurrentHashMap will not preserve the order of elements in the Map passed in.
It is similar to HashMap when storing data. There is no guarantee that the
element order is preserved. While Collections.synchronizedMap(0 will preserve
the elements order of the Map passed in. For example, if you pass a TreeMap to
ConcurrentHashMap, the elements order in the ConcurrentHashMap may not be the
same as the order in the TreeMap, but Collections.synchronizedMap() will
preserve the order.
Note: Collections.synchronizedMap(HashMap) is equals to Hashtable
Subscribe to:
Posts (Atom)