Home  >  Article  >  Java  >  Differences between java collections interview questions

Differences between java collections interview questions

(*-*)浩
(*-*)浩Original
2019-11-29 15:49:081536browse

Differences between java collections interview questions

What is the difference between HashMap and Hashtable?

HashMap and Hashtable both implement the Map interface, so many features are very similar. However, they have the following differences: HashMap allows keys and values ​​to be null, while Hashtable does not allow keys or values ​​to be null. (Recommended study: java interview questions)

Hashtable is synchronous, but HashMap is not. Therefore, HashMap is more suitable for single-threaded environments, while Hashtable is suitable for multi-threaded environments.

HashMap provides a collection of keys that can be iterated by the application. Therefore, HashMap is fail-fast. On the other hand, Hashtable provides an enumeration of keys.

It is generally believed that Hashtable is a legacy class.

What is the difference between array (Array) and list (ArrayList)? When should you use Array instead of ArrayList?

The differences between Array and ArrayList are listed below:

Array can contain basic types and object types, and ArrayList can only contain object types.

The size of Array is fixed, and the size of ArrayList changes dynamically.

ArrayList provides more methods and features, such as: addAll(), removeAll(), iterator(), etc. For basic types of data, collections use autoboxing to reduce coding effort. However, this approach is relatively slow when dealing with fixed-size primitive data types.

What is the difference between ArrayList and LinkedList?

ArrayList and LinkedList both implement the List interface. They have the following differences:

ArrayList is an index-based data interface, and its bottom layer is an array. It can perform random access to elements with O(1) time complexity. Correspondingly, LinkedList stores its data in the form of a list of elements. Each element is linked to its previous and following elements. In this case, the time complexity of finding an element is O( n).

Compared to ArrayList, LinkedList's insertion, addition, and deletion operations are faster because when an element is added to any position in the collection, there is no need to recalculate the size or update the index like an array.

LinkedList takes up more memory than ArrayList because LinkedList stores two references for each node, one pointing to the previous element and one pointing to the next element.

You can also refer to ArrayList vs. LinkedList.

What do the Comparable and Comparator interfaces do? List their differences.

Java provides the Comparable interface which contains only one compareTo() method. This method can sort two objects. Specifically, it returns negative numbers, 0, and positive numbers to indicate that the input object is less than, equal to, or greater than an existing object.

Java provides the Comparator interface containing two methods: compare() and equals(). The compare() method is used to sort two input parameters and returns a negative number, 0. A positive number indicates that the first parameter is less than, equal to, or greater than the second parameter.

The equals() method requires an object as a parameter, which is used to determine whether the input parameter is equal to the comparator. This method returns true only if the input parameter is also a comparator and the sorting result of the input parameter and the current comparator is the same.

What is the difference between HashSet and TreeSet?

HashSet is implemented by a hash table, therefore, its elements are unordered. The time complexity of the add(), remove(), and contains() methods is O(1).

On the other hand, TreeSet is implemented by a tree structure, and the elements in it are ordered. Therefore, the time complexity of the add(), remove(), contains() methods is O(logn).

What is the difference between HashMap and ConcurrentHashMap?

ConcurrentHashMap is a thread-safe implementation of HashMap. The main differences are as follows:

ConcurrentHashMap divides the entire bucket array into segments, and then uses lock locks to protect each segment. Compared with Hashtable's syn keyword lock, the granularity is finer. Some, the concurrency performance is better. HashMap has no lock mechanism and is not thread-safe.

HashMap's key-value pairs allow null, but ConCurrentHashMap does not allow it.

After JDK8, ConcurrentHashMap enabled a new way to implement it, using the CAS algorithm.

Do List, Set, and Map inherit from Collection interface?

List and Set are, but Map is not. Map is a key-value pair mapping container, which is obviously different from List and Set. Set stores scattered elements and does not allow duplicate elements (the same is true for sets in mathematics). List is a container with a linear structure and is suitable for numeric values. Index access to elements.

Tell me the storage performance and characteristics of ArrayList, Vector, and LinkedList?

ArrayList and Vector both use arrays to store data. The number of array elements is larger than the actual stored data so that elements can be added and inserted. They both allow elements to be directly indexed by serial numbers, but inserting elements involves memory operations such as moving array elements. , so indexing data is fast but inserting data is slow. Because Vector uses the synchronized method (thread safety), its performance is usually worse than ArrayList.

LinkedList uses a doubly linked list to implement storage (associating scattered memory units in the memory through additional references to form a linear structure that can be indexed by serial number. This chain storage method is consistent with the continuous storage method of the array. Compared with (in fact, the memory utilization is higher), indexing data by serial number requires forward or backward traversal, but when inserting data, you only need to record the before and after items of this item, so the insertion speed is faster.

Vector is a legacy container (containers used in early JDK, in addition to Hashtable, Dictionary, BitSet, Stack, and Properties are all legacy containers). It is no longer recommended to use, but because ArrayList and LinkedListed both It is not thread-safe. If multiple threads need to operate the same container, you can convert it into a thread-safe container through the synchronizedList method in the tool class Collections before using it (this is actually the best example of the decoration mode, which will The object is passed into the constructor of another class to create a new object to add new functionality).

What are the characteristics of each of the three interfaces List, Map, and Set when storing elements?

List is an ordered Collection. Using this interface, you can precisely control the insertion position of each element. Users can access elements in a List using an index (the element's position in the List, similar to an array subscript), similar to Java's arrays.

Set is a Collection that does not contain duplicate elements, that is, any two elements e1 and e2 have e1.equals(e2)=false, and Set has at most one null element.

Map interface: Please note that Map does not inherit the Collection interface. Map provides key to value mapping

The above is the detailed content of Differences between java collections interview questions. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn