Java Programming - Objects and Collections - Discussion

Discussion Forum : Objects and Collections - Pointing out the correct statements (Q.No. 1)
1.
class Test1 
{
    public int value;
    public int hashCode() { return 42; }
}
class Test2 
{
    public int value;
    public int hashcode() { return (int)(value^5); }
}
which statement is true?
class Test1 will not compile.
The Test1 hashCode() method is more efficient than the Test2 hashCode() method.
The Test1 hashCode() method is less efficient than the Test2 hashCode() method.
class Test2 will not compile.
Answer: Option
Explanation:

The so-called "hashing algorithm" implemented by class Test1 will always return the same value, 42, which is legal but which will place all of the hash table entries into a single bucket, the most inefficient setup possible.

Option A and D are incorrect because these classes are legal.

Option B is incorrect based on the logic described above.

Discussion:
14 comments Page 1 of 2.

Katalin said:   2 years ago
There is a typo, in line : public int hashcode () {return (int) (value^5);}.

Hashcode --> hashCode.

Ken said:   8 years ago
It should be 'ideal' instead of efficient.

Fixit said:   8 years ago
This is a terrible question.

There is no mention of hash tables so you simply can't make that bit up - the methods have to be assessed on their merits.

Value is never initialised in Test2 so the method will always return 0. Hardly a model method!

The method in Test2 is called hashcode not hashCode so the "correct" option makes no sense.

Robin said:   9 years ago
Exact int are initialized at 0, and don't forget that : 0^n = 1.

One return al the time 42 and the other one always 1. (Assuming we never change the parameter "value".

Salim said:   9 years ago
@Karam

The instance variables are initialized to default, here 0(zero).

Karam said:   9 years ago
The int value is not initialized, so compilation fails.

Rupesh said:   9 years ago
There is no any public call for java file only one public class is needed.

Peter said:   10 years ago
Here is my suggestion to fix this contextual problem, open for further improvement.

In order to make it clear that the test is about knowing the purpose of the hashCode() method, answers B and C could be changed to:

[B]. The Test1 hashCode() method is a more efficient hashing method than the Test2 hashCode() method.

[C]. The Test1 hashCode() method is a less efficient hashing method than the Test2 hashCode() method.

What do you think?

Alex said:   1 decade ago
The answer choices don't state that the hashCode/hashcode functions are more efficient hashing algorithms. Within the context of the code given, B should be the correct answer. Strictly speaking though, none of the answers are correct, because Test2 does not have a "hashCode" method.

Vikesh said:   1 decade ago
@Nickc-88, totally agreed. hasCode() for Test1 is more efficient since no computation is required. The value returned by both are obviously useless since they both return "a constant" value in all cases - only difference is one returns 42 without computing it, other returns 5 after some arithmetic operation.


Post your comments here:

Your comments will be displayed after verification.