2014-11-04 8 views
0

다음과 같은 시나리오가 있습니다.HashMap ContainsKey vs

나는 다음과 같은 유틸리티 클래스를 가지고있다. 방법.

public static Map<String, String> getFeeList() { 
     Map<String, String> map = new HashMap<String, String>(); 
     map.put("Student Lists", "Student List"); 
     map.put("Student grade", "Student Grade"); 
     return map; 
    } 

나는 JSP에서이 메소드를 호출하고 아래 같은 다른 값을 comapring하고, 아래

feeListsMap는 class.getFeeList 아무것도() 요청으로 설정하고 JSP에서 가져 오는 중 오류가 없습니다. vo.getSubClassDesc (위에서

<% if(feeListsMap.containsKey(vo.getSubClassDesc())){%> 
<td align="center">0</td>  
<%}else{%> 
<td align="center">TEST</td>   
<%}%> 

)는 '지난 달 기준으로 학생 목록', '오늘 같은 학생 목록'과 같은 몇 가지 접미사를 포함 할 수 있습니다 .... 그러나 JSP에서 위 검사는 정확한 PIN이됩니다 키 값과 '오늘의 학생 목록', '지난 달의 학생 목록'에서 작동하지 않습니다. 지도에 더 많은 키 값 쌍이 포함될 수 있고 하위 문자열을 항상 사용하고 싶지 않으므로 여기에서 하위 문자열을 사용하고 싶지 않습니다. String contains()와 유사하게 작동하는 subClassDesc와 키 값을 비교할 수있는 쉬운 방법이 있습니까?

+0

각 항목에 대해 String.contains ("student")를 사용할 수 없습니까? – nafas

+0

HashMap은 문자열 자체가 아닌 문자열 해시를 사용합니다. 그래서 당신이 찾고있는 것을 할 수있는 방법이 없습니다. 키와 일치하도록'vo.getSubClassDesc()'를 변형하거나'keySet()'을 가져 와서 해당 키셋을 반복하고'vo.getSubClassDesc(). contains (key)'를 사용하십시오 – kingdamian42

+0

* 쉬운 방법이 있습니까? 여기서 key 값을 String contains()와 비슷한 방식으로 작동하는 subClassDesc와 비교할 수 있습니다. * Java 내장 클래스에서 제공하는 현재 메소드는 없습니다. 맵에서 키를 순회하고 예상대로'String # contains '를 수행해야하며이 접근법의 용이성은 프로그래머 (이 경우에는 당신)에 달려있다. 아마 당신은 당신이 원하거나 필요로하는 것을 이루기 위해 다른 구조를 사용하기를 원할 것입니다. –

답변

0

내장 된 Java 클래스에서 직접 수행 할 방법은 없습니다. 당신은 feeListsMap 객체의 key의 루핑에 의해

vo.getSubClassDesc().contains(key) 

을 수행해야합니다.