2013-12-15 3 views
0

자바에서 해시 맵을 배우므로 계정을 만드는 간단한 자바 프로그램이 있습니다. 내 문제는 컬렉션에 새 계정을 저장하는 것입니다. 해시 맵을 사용하여이를 수행하려고 시도하지만 어디로 이동해야하는지 알 수 없습니다.컬렉션에 객체 추가

HashMap<String,CurrentAccount> m = new HashMap<String,String>(); 
if (Account.validateID(accountID)) { 
    CurrentAccount ca = new CurrentAccount(cl,accountID, sortCode, 0); 

나는이 계정을 해시 맵에 추가 할 확신이 없지만 몇 가지 방법을 시도했지만 항상 오류가 발생합니다.

답변

3

인스턴스화 문에 오류가 있습니다. 지도 유형은 HashMap<String, CurrentAccount>이지만 HashMap<String,String>을 인스턴스화합니다. 대신 (다이아몬드 표기법을 사용 이상 Generic Types을 볼 수 있었다 1.7+

HashMap<String, CurrentAccount> m = new HashMap<String, CurrentAccount>(); 

을 아니면 JDK를 사용하는 경우 :이 문제를 해결하려면

, 다음과 같이지도의 유형에 대응하기 위해 인스턴스 문을 변경 정보) :

HashMap<String, CurrentAccount> m = new HashMap<>(); 

지도에 항목을 추가하려면, 당신이 사용할 수있는 Map#put(K, V) :

,
m.put(accountID, ca); 

값을 취득하기 위하여는, 당신은 Map#get(Object)를 사용할 수 있습니다

CurrentAccount ca = m.get(accountID); 

이지도에 대한 자세한 내용은 JDK 1.7 Map documentation를 참조하십시오. 다양한 방법의지도 (또는 다른 종류)에 액세스하기 위해,이 답변의 의견에 OP에 의해 만들어진 문제에 관해서는


, 그것은 클래스 필드로 선언되어야한다 :

public class TestClass { 
    Map<String, CurrentAccount> accountMap; 

    public TestClass() { 
     accountMap = new HashMap<String, CurrentAccount>(); 
    } 

    public void method1() { 
     // You can access the map as accountMap 
    } 

    public void method2() { 
     // You can also acces it here 
    } 
} 
+0

감사 할 수 있습니다 얻기 위해 키를 사용하는 지금은 더 많은 의미가 있습니다! 내 유일한 다른 질문은, 내가 한 모든 함수를 다했는데, 다른 함수에서 hashmap으로부터 값을 호출 할 수 있다는 것인가? – UniqueName

+0

해시 맵을 클래스의 필드로 선언해야합니다. 예를 들어 답을 업데이트하겠습니다. –

+0

대단히 감사합니다. 지금이 걸림돌이 있습니다! 건배! – UniqueName

1

두 개의 서로 다른 개체에 값을 입력 할 때 맵 선언이 잘못되었습니다. 선언에 변경하십시오 accountID 값이 문자열로 추정, 그리고

Map<String,CurrentAccount> m = new HashMap<String,CurrentAccount>(); 

을, 그것만큼 간단해야 ...전부

m.put(accountID, ca); 

당신은 할 수 있습니다 :

Map<String,CurrentAccount> m = new HashMap<String,CurrentAccount>(); 

if (Account.validateID(accountID)) { 
    CurrentAccount ca = new CurrentAccount(cl,accountID, sortCode, 0); 
    m.put(accountID, ca); 
} 
0

당신이 키에 대한 String 형 문자열의 해시 맵에 String 형 및 계정에 바인드 된 hasmap을 (초기화하려고하기 때문에 귀하의 코드는 컴파일되지 않고 되어야

HashMap<String, CurrentAccount> accountsMap = new Hashmap<String, String>() 

값 유형)

HashMap<String, CurrentAccount> accountsMap = new Hashmap<String, CurrentAccount>() 
,745,

첫 번째 인수는 두 번째는 다음과 같은 코드를 사용할 수있는 해시 맵 내의 값이

for (String key : accountsMap.keySet().iterator()) { 
     CurrentAccount current = accounts.get(key); 
} 

을 냈다 찾으려면 키

에 대한 관련 값의 유형입니다 키 값의 유형 accountsMap은 HashMap입니다.

0

사용 put(key, value);는 특정 개체에 액세스 할 그런 때마다 HashMap javadoc

m.put("SomeIdentifierString", ca); 

를 참조하십시오. 당신이 키 얻을 수있는 전체지도를 통해 반복 원하는 값 경우가

CurrentAccount account = m.get("SomeIdentifierString"); 

for (Map.Entry<String, CurrentAccount> entry : m.entrySet()){ 
    String s = entry.getKey(); 
    CurrentAccount accuont = entry.getValue(); 
    // do something with them 
}