2012-11-02 4 views
1

를 사용하여 서로 다른 데이터 형식의 ArrayList를 인쇄 할 수 없습니다 :I 클래스가 자바

sample.java

class sample 

int val; 
String str; 

생성자

sample(String str,int val) 

str=this.str; 

val=this.val 

test.java

ArrayList<sample> lst=new ArrayList<sample>(); 

lst.add(new sample("somedata",33)): 

lst.add(new sample("somedata",33)): 

arraylist obj를 네트워크를 통해 보내십시오.하지만 arraylist에서 값을 인쇄 할 수 있는지 궁금합니다. iterator를 사용하여 시도했지만 개체 참조 만 표시하고 있습니다.

답변

4

sample 클래스에서 toString 메서드를 재정의하십시오. 당신은 사용할 수 있습니다

@Override 
public String toString() { 
    return "str=" + str + " val=" + val; 
} 
2

재정을 toString() 방법을 당신의 클래스

public String toString(){ 
return str+"," + value; 
} 

Iterator<Sample> itr = lst.iterator(); 
while(itr.hasNext()){ 
system.out.println(itr.next().toString()); 
} 
3

이 문제에 대한 쉬운 해결책은 다음 toString 메소드를 구현하여 sample 클래스 :

@Override 
public String toString() { 
    return str + ", " + val; 
} 

그러면 각 인스턴스의 필드 값이 표시됩니다.

그렇지 않으면 :

for (sample s:lst) { 
    System.out.println(s.str + ", " + s.val); 
} 
0

는 toString을 구현하고 당신이 원하는 모든 단지 객체를 인쇄 할 경우 당신은 괜찮을거야 : 루프에서 필드에 액세스 할 수 있습니다.

1

대문자로 시작하는 클래스 이름을 사용하십시오. 또한 생성자가 잘못되었습니다.

sample(String str,int val) { 

this.str=str; 

this.val=val 

} 
관련 문제