Javaで次のアイデアを実装したいと思います。2つのメンバーを持つクラスの1つのオブジェクトをブール値にマップし、同じ2つのメンバー値を持つ同じクラスの別のオブジェクトを作成すると、最初のブール値と同じブール値にマップする必要があります。Javaのオブジェクトのマッピング
#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)ここで
存在する。ここ
は、Cのコードがうまくいけば、私がやろうとしているかを説明することを++でありますとbは同じオブジェクトではありませんが、同じメンバー値を持ちます。したがって、それらは同じブール値にマップされます。
私は成功せず、これを実装するためにJavaでHashMapを使用して試してみました:
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?オブジェクトは、あなたがそのequals(Object)
とhashCode()
メソッドをオーバーライドする必要がHasMap
でキーとして機能させるためには
ありがとうございました。あなたは配列の場合に何をすべきか考えてくれますか? –
私はhashcode()を実装する方法を意味しました。私はequals()の部分を得ました。 –
もう一度わかりました。 –