Java.Core.Explain the meaning of the parameters in the HashMap(int initialCapacity, float loadFactor) constructor.

💡 The constructor:

new HashMap(int initialCapacity, float loadFactor)

is one of the most powerful and fine-tuned ways to create a HashMap. Let’s break down what each parameter means:

Continue reading →
Posted in Без рубрики | Comments Off on Java.Core.Explain the meaning of the parameters in the HashMap(int initialCapacity, float loadFactor) constructor.

Java.Collections.How many new objects are created when you add a new element to a HashMap?

Excellent question, Stanley! Let’s break it down:

How many new objects are created when you do map.put(key, value) in a HashMap?

It depends on a few factors like resizing, collisions, and whether the key already exists. But in the most common case, here’s what happens:

Continue reading →
Posted in Без рубрики | Comments Off on Java.Collections.How many new objects are created when you add a new element to a HashMap?

Java.Collections.How many transitions are involved when calling HashMap.get(key) on a key that is in the table?

We’ll define a transition as a significant operation or decision point the HashMap makes to retrieve a value. This includes hashing, indexing, and comparisons.

Continue reading →
Posted in Без рубрики | Comments Off on Java.Collections.How many transitions are involved when calling HashMap.get(key) on a key that is in the table?

Java.Collections.Why does a doubly linked list always convert to a red-black tree even though the key in a HashMap does not have to implement the Comparable interface?

If HashMap converts a bucket’s linked list to a red-black tree, how can that work when keys don’t necessarily implement Comparable?

After all, a red-black tree needs to order keys to compare them — so how does that not break?

Continue reading →
Posted in Без рубрики | Comments Off on Java.Collections.Why does a doubly linked list always convert to a red-black tree even though the key in a HashMap does not have to implement the Comparable interface?

Java.Collections.What is the worst case runtime of get(key) for a key that is in the HashMap?

🚀 TL;DR:

The worst-case runtime of get(key) when the key is in the map is:

  • O(n) in Java versions before 8 (linked list buckets),
  • O(log n) in Java 8 and later, thanks to treeified buckets,
  • O(1) in the average case (with a good hash function and even distribution).
Continue reading →
Posted in Без рубрики | Comments Off on Java.Collections.What is the worst case runtime of get(key) for a key that is in the HashMap?

Java.Collections.What is the worst case runtime of get(key) for a key that is not in the HashMap?

It depends on the internal structure of the HashMap and how collisions are handled.

Continue reading →
Posted in Без рубрики | Comments Off on Java.Collections.What is the worst case runtime of get(key) for a key that is not in the HashMap?

Java.Collections.What is the maximum number of hashCode() values?

🧠 What is the maximum number of hashCode() values?

In Java, the return type of hashCode() is an int, so:

public int hashCode()

That means:

  • It returns a 32-bit signed integer.
  • The range of values is:
Continue reading →
Posted in Без рубрики | Comments Off on Java.Collections.What is the maximum number of hashCode() values?

Java.Collections.What is the role of equals() and hashCode() in a HashMap?

The methods equals() and hashCode() play a critical role in how HashMap works under the hood.

Let’s break it down with a clear and intuitive explanation. 🧠

🔧 How HashMap stores and finds keys:

When you do:

map.put(key, value);

Step 1: Use hashCode() to find the bucket index

int hash = key.hashCode(); 
int index = hash % table.length;

➡️ This determines which bucket (array slot) the entry goes into.

Continue reading →
Posted in Без рубрики | Comments Off on Java.Collections.What is the role of equals() and hashCode() in a HashMap?

Java.Collections.Why can’t I use byte[] as a key in a HashMap?

Using byte[] as a key in a HashMapdoesn’t work the way you might expect — and it’s all because of how arrays handle equals() and hashCode() in Java.

🚫 Why byte[] doesn’t work as a HashMap key:

1. Default equals() is identity-based

When you use byte[] as a key, it inherits equals() from Object:

byte[] a = {1, 2, 3};
byte[] b = {1, 2, 3};

System.out.println(a.equals(b)); // false ❌

Even though the contents are the same, the two arrays are different objects, so:

  • equals() returns false,
  • hashCode() is based on memory address, not content.

2. HashMap uses equals() and hashCode()

So when you do:

map.put(a, "value");
map.get(b); // returns null ❌

It doesn’t find b even though it “looks” like a, because the keys are not considered equal.

Continue reading →
Posted in Без рубрики | Comments Off on Java.Collections.Why can’t I use byte[] as a key in a HashMap?

Java.Collections.In what case can an element be lost in HashMap?

⚠️ 1. Poor equals() and hashCode() implementation

If you create your own key class and don’t override equals() and hashCode() properly, HashMap won’t be able to:

  • Find existing entries correctly,
  • Prevent duplicate keys,
  • Replace values correctly.

🔥 Example:

class MyKey {
    int id;
    MyKey(int id) { this.id = id; }
    // Oops! No hashCode() or equals()
}
Map<MyKey, String> map = new HashMap<>();
map.put(new MyKey(1), "A");
map.put(new MyKey(1), "B");
System.out.println(map.size()); // Output: 2 (should be 1)

➡️ Both keys look logically equal but go to different buckets, so the first value becomes unreachable — effectively “lost”.

Continue reading →
Posted in Без рубрики | Comments Off on Java.Collections.In what case can an element be lost in HashMap?