我有一个IntPair类,它有两个我使用的方法:" getFirst()"和" getSecond()"。虽然在我目前正在使用的这种方法中,我想检查是否" hashMap j"包含特定值,然后执行操作。我想我有这些问题:
Object obj = j.values();
t.moveCursor(((IntPair)obj).getFirst(), ((IntPair)obj).getSecond());
我不知道我是否向对象投射,或者如果第一行"对象obj = j.values()"应该用另一个方法调用替换。 我在j.containsValue(" 0")之后使用System.out.print(" Message")进行了测试,然后我收到了消息。
这是我试图让它发挥作用的方法的一部分。
public static HashMap<IntPair, String> j = new HashMap<>();
j.put(new IntPair(firstInt, secondInt), value);
if (j.containsValue("0"))
{
Object obj = j.values();
t.moveCursor(((IntPair)obj).getFirst(), ((IntPair)obj).getSecond());
t.putCharacter('x');
}
else if (j.containsValue("1"))
{
Object obj = j.values();
t.moveCursor(((IntPair)obj).getFirst(), ((IntPair)obj).getSecond());
t.putCharacter('v');
}
IntPair类:
public class IntPair {
private final int first;
private final int second;
public IntPair(int first, int second) {
this.first = first;
this.second = second;
}
@Override
public int hashCode() {
int hash = 3;
hash = 89 * hash + this.first;
hash = 89 * hash + this.second;
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final IntPair other = (IntPair) obj;
if (this.first != other.first) {
return false;
}
if (this.second != other.second) {
return false;
}
return true;
}
public int getFirst() {
return first;
}
public int getSecond() {
return second;
}
}
任何帮助都会非常感激。谢谢!
答案 0 :(得分:1)
您编写的代码存在很大问题 在行
t.moveCursor(((IntPair)obj).getFirst(), ((IntPair)obj).getSecond());
表达式
((IntPair)obj).getFirst()
不会返回getFirst值,因为obj不是IntPair类型,而obj是由
返回的元素IntPair的集合Object obj = j.values();
所以你必须从这个集合中检索IntPair元素然后你可以读取getFirst() 我写了一个小程序来说明我的观点
public static HashMap<IntPair, String> j = new HashMap<IntPair, String>();
public static void main(String[] args) {
j.put(new IntPair(2, 3), "0");
if (j.containsValue("0")) {
Set<Entry<IntPair, String>> pairs = j.entrySet();
Iterator<Entry<IntPair, String>> it = pairs.iterator();
Entry e;
while (it.hasNext()) {
e = it.next();
if (e.getValue().equals("0")) {
IntPair resultObj = (IntPair) e.getKey();
}
}
}
}
答案 1 :(得分:0)
请注意,values()
方法返回值对象的集合,此处为字符串集合。你不能把这个转发给IntPair,我很惊讶你的尝试不会导致编译错误。