2017-11-01 1 views
-1

클래스의 오브젝트 해시 맵을 작성하려고합니다. 내가 문자열로 해시 맵을 갖는 키를 생성하고 해시 맵에 값을 삽입하려고해시 맵 생성 클래스의 오브젝트 해시 맵

public class BitbucketRecordDataModel { 
    private String softwareId; 
    private String scmUrl; 
    private String aggregationDate; 

    public BitbucketRecordDataModel(String softwareId, String scmUrl, String aggregationDate) { 
     this.softwareId = softwareId; 
     this.scmUrl = scmUrl; 
     this.aggregationDate = aggregationDate; 
    } 

    public String getSoftwareId() { 
     return softwareId; 
    } 

    public void setSoftwareId(String softwareId) { 
     this.softwareId = softwareId; 
    } 

    public String getScmUrl() { 
     return scmUrl; 
    } 

    public void setScmUrl(String scmUrl) { 
     this.scmUrl = scmUrl; 
    } 

    public String getAggregationDate() { 
     return aggregationDate; 
    } 

    public void setAggregationDate(String aggregationDate) { 
     this.aggregationDate = aggregationDate; 
    } 
} 

- 다음과 같이

클래스입니다. 그러나 해시 맵의 세부 정보를 가져 오려고하면 null이 생기고 클래스의 이름 인 매우 이상한 값이 생깁니다.

HashMap<String, BitbucketRecordDataModel> map = new HashMap<String, BitbucketRecordDataModel>(); 

cacheCondition = "hi"; 
username = "hi1"; 
protocol = "hi2"; 

BitbucketRecordDataModel bitbucketRecordDataModel = new BitbucketRecordDataModel(cacheCondition, username, protocol); 

map.put(repoName, bitbucketRecordDataModel); 

System.out.println(map.get("deployment-service-api.git")); 

저는 자바와 해시지도에서 새롭습니다. 내가 뭘 잘못하고 왜 그런 기이 한 가치를 얻는거야?

+0

하는'map.get (repoName) 일을 시도,'그 결과 내 class'의 이름입니다 –

+2

'매우 이상한 값을 확인 - 당신은'toString()를 오버라이드 (override) 할 필요가'당신이 원하는 경우 이상한 가치를 가지지 마라. – Eran

+0

@Eran, 이봐, 그게 매력적 이었어. 정말 고맙습니다 –

답변

0

우선, toString() 클래스의 메서드를 재정의해야합니다. 객체 인스턴스를 재정의하고 객체 인스턴스에서 호출하면 객체 클래스의 구현으로 응답합니다. 여기에서 기본 구현을 찾을 수 있습니다 please find toString() Method

아래의 toString() 메소드에 대한 공유 코드 블록을 복사하여 클래스에 붙여 넣으십시오.

또한 내가지도 데이터를 넣는 동안 키로 repoName를 정의하는 것으로 나타났습니다하지만 데이터를 검색하는 동안 당신은 키로 배포 서비스-api.git를 사용합니다.

동일한 키 값을 사용해야합니다.

@Override 
     public String toString() { 
      return "BitbucketRecordDataModel{" + 
        "softwareId='" + softwareId + '\'' + 
        ", scmUrl='" + scmUrl + '\'' + 
        ", aggregationDate='" + aggregationDate + '\'' + 
        '}'; 
     }