2013-04-26 2 views
0

2 개의 클래스가 있습니다.HashMap 값을 출력하는 방법은 무엇입니까? xxx @ da52a1과 같은 출력

Main.java

import java.util.HashMap; 
import java.util.Map; 

public class Main { 
    Map<Integer, Row> rows = new HashMap<Integer, Row>(); 
    private Row col; 

    public Main() { 
     col = new Row(); 
     show(); 
    } 

    public void show() { 
     // col.setCol("one", "two", "three"); 
     // System.out.println(col.getCol()); 

     Row p = new Row("raz", "dwa", "trzy"); 
     Row pos = rows.put(1, p); 
     System.out.println(rows.get(1)); 

    } 

    public String toString() { 
     return "AA: " + rows; 
    } 

    public static void main(String[] args) { 
     new Main(); 
    } 
} 

및 Row.java

public class Row { 

    private String col1; 
    private String col2; 
    private String col3; 

    public Row() { 
     col1 = ""; 
     col2 = ""; 
     col3 = ""; 
    } 

    public Row(String col1, String col2, String col3) { 
     this.col1 = col1; 
     this.col2 = col2; 
     this.col3 = col3; 
    } 

    public void setCol(String col1, String col2, String col3) { 
     this.col1 = col1; 
     this.col2 = col2; 
     this.col3 = col3; 
    } 

    public String getCol() { 
     return col1 + " " + col2 + " " + col3; 
    } 
} 

출력은 항상 "행 @의 da52a1"또는 이와 유사한 것 같습니다. 그것을 고치는 방법? 나는 각 문자열에 쉽게 접근 할 수있는 같은 것을 할 수 있도록하려면 :지도의 대상으로 자사를 사용하는

str="string1","string2","string3"; // it's kind of pseudocode ;) 
rows.put(1,str); 
rows.get(1); 

당신이 볼 수 있듯이, 내가 만든 클래스 행,하지만 난 아무 생각이 무엇인지 내 코드가 잘못되었습니다.

답변

2

는 재정이처럼 클래스에 toString 방법이 시도 발 :

@Override 
public String toString() { 
    return col1 + " " + col2 + " " + col3; 
} 
+0

@Baadshah @Baadshah이 값을 얻었으므로 잘 작동한다고 생각합니다. 고마워 durron597 :) – tmq

+0

@tmq 녹색 체크 표시를 클릭하는 것을 잊지 마세요 :) – durron597

+0

@ tmq 그 이유는 내가 +1 durron 준 –

-1
return "AA: " + rows; its calling toString method on Row object 

실제로 당신은 추가해야하는 각 열

return "AA: " +col1 + " " + col2 + " " + col3; //typo edited 
0

사용자 정의를 추가 toString 방법을 cla ss. toString은 모든 Java 객체에있는 메소드입니다. 이런 상황에 존재합니다. 당신의 행 클래스

0

재정의 toString 메소드 및 인쇄 값은 당신은 당신의 경우 다음과 같이이 방법이어야에서

,

@Override 
public String toString() { 
    return col1 + " " + col2 + " " + col3; 
} 
0

에서 System.out.println (행을 인쇄 할. get (1));

rows.get(1) 의 개체를 반환합니다. 따라서 콘솔에 인쇄하면 개체가 인쇄됩니다.

문제를 해결하려면 toString() 함수를 String을 반환하는 Row 클래스에 구현하고 재정의 할 수 있습니다.

0

하면 16 진수 표기법으로 객체의 해시 코드와 클래스 이름을 결합 문자열의 기본 toString 방법를 호출 결국 때문에, 행 @의 da52a1을 받고 있습니다.

toString 메서드를 직접 작성하여 객체에 toString을 호출 할 때마다 표시 할 값을 컴파일러에 알릴 수 있습니다.

@Override 
public String toString() { 
    return this.col1 + " " + this.col2 + " " + this.col3; 
} 
관련 문제