我想在Java中實現以下想法:如果我將具有2個成員的類的一個對象映射爲布爾值,並使用相同的2個成員值創建另一個具有相同類的對象,則第二個對象應映射到與第一個相同的布爾值。在Java中映射對象
這是在C++代碼有希望地解釋了什麼是我想要做的事:
#include <iostream>
#include <map>
using namespace std;
class A{
int x;
int y;
public:
A(int a, int b){
x = a;
y = b;
}
bool operator < (const A &another) const{
return x < another.x || y < another.y;
}
};
int main() {
A a(1,2),b(1,2);
map <A,bool> exists;
exists[a]=true;
if(exists[b]){
cout << "(1,2) exists" << endl;
}
else{
cout << "(1,2) does not exist" << endl;
}
return 0;
}
輸出:
(1,2)存在
這裏一和b不是同一個對象,但它們具有相同的成員值。所以他們映射到相同的布爾值。
我一直在使用的HashMap在Java中實現這個沒有成功嘗試:
import java.util.*;
import java.lang.*;
import java.io.*;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
A a = new A(1,2);
A b = new A(1,2);
Map <A,Boolean> exists = new HashMap<A,Boolean>();
exists.put(a,true);
if(exists.containsKey(b)){
System.out.println("(1,2) exists");
}
else{
System.out.println("(1,2) does not exist");
}
}
}
class A{
private int x;
private int y;
public A(int a, int b){
x = a;
y = b;
}
}
輸出:
(1,2)不存在
我應該如何實現這在Java中?
謝謝。你可以給我一些想法在數組的情況下做什麼? –
我的意思是如何實現hashcode()。我得到了equals()部分。 –
好的,讓我再次澄清。 –