2015-01-17 4 views
0

"getFirst()"및 "getSecond()"두 가지 방법을 사용하는 IntPair 클래스가 있습니다. 현재이 방법을 사용하고있는 동안 "hashMap j"에 특정 값이 들어 있는지 확인한 다음 작업을 수행하려고합니다.HashMap <Object, String> 값 확인

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

일을 할 수있는 작은 프로그램을 작성했습니다 방법 ... ". 2) IntPair 클래스가 equals와 hashCode()를 적절히 오버 라이딩한다고 가정합니다. 3) 정확히 무엇이 요구되는지, 또는 당신이 붙어 있는지 확실하지 않습니다. 전송에 관한 질문을 언급합니다. 오류 또는 예외를 발생시키려는 시도입니까? –

답변

0

values() 메서드는 값 개체 컬렉션을 반환합니다. 여기에는 문자열 컬렉션이 있습니다. 이것을 IntPair로 변환 할 수 없으며, 귀하의 시도가 컴파일러 오류를 유발하지 않는다는 것에 놀랐습니다. 하지 유형 IntPair하지만 OBJ 여기 OBJ로

+0

나는 그 질문을 편집했다. values ​​() 대신 무엇을 사용해야합니까? – XhensB

+0

@XhensB : 달성하려는 것은 무엇입니까? 어떤 오류가 발생 했습니까? –

+0

아무런 오류 메시지가 나타나지 않지만 코드가 작동하지 않습니다. 터미널 화면이있어서 hashMap에서 값을 가져 와서 moveCursor (int x, int y) 메서드에서 인수로 전달하려고합니다. 원하는 위치로 커서를 이동 한 후 문자로 채 웁니다. 결과적으로 화면 끝에 빈 화면이 생깁니다. – XhensB

1

당신이 라인

t.moveCursor(((IntPair)obj).getFirst(), ((IntPair)obj).getSecond()); 

((IntPair)obj).getFirst() 

실 거예요 getFirst와 값을 반환 식에 를 작성한 코드에 큰 문제가있다 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(); 
       } 
      } 

     } 
    } 
관련 문제