2013-04-25 50 views
0

我有以下的LinkedHashMap中,我把值以下列方式:通過地圖像下面爪哇 - 循環通過LinkedHashMap的,並獲得價值

if (preAuthorizeAnnotation != null) { 
    requestMappingValues = requestMappingAnnotation.value(); // to get the url value 
    RequestMethod[] methods = requestMappingAnnotation.method(); // to get the request method type 
    System.out.println(+i + ":Method : " + method2.getName() + " is secured "); 
    //System.out.println("Requestion method type : "+methods[0].name()); 
    Class[] parameterTypes = method2.getParameterTypes(); 
    for (Class class1: parameterTypes) { 
     userDefinedParams = new UserDefinedParams(); 
     strClassNameToFix = class1.getName(); 
     strClassname = strClassNameToFix.replaceAll("\\[L", "").replaceAll("\\;", ""); 
     if (class1.isArray()) { 

      //classObj = strClassnames.substring(strClassnames.lastIndexOf('.')+1, strClassnames.length()-1); 
      userDefinedParams.setDataType(strClassname); 
      userDefinedParams.setIsArray("Y"); 
      paramsList.add(userDefinedParams); 
     } else if (class1.isPrimitive() && class1.isArray()) { 
      userDefinedParams.setDataType(strClassname); 
      userDefinedParams.setIsArray("Y"); 
      paramsList.add(userDefinedParams); 
     } else { 
      userDefinedParams.setDataType(strClassname); 
      userDefinedParams.setIsArray("N"); 
      paramsList.add(userDefinedParams); 
     } 
     System.out.println("strClassname : " + strClassname); 
    } 
    paramsMap.put("url_" + i, requestMappingValues[0]); 
    paramsMap.put("params_" + i, paramsList); 

我嘗試循環:

for (Object key: paramsMap.keySet()) { 
    uri = "http://localhost:8080/api" + paramsMap.get(key); 
    statusCode = httpRequest.handleHTTPRequest(client, uri); 
    System.out.println("Statuscode : " + statusCode); 
} 

我得到以下異常:

java.lang.IllegalArgumentException 

,因爲它第一次得到url正確,但它錯過了params

我想分開的URL和paramList,以便我可以處理它。

我想獲取URL的URL和相應的參數列表,並將paramList轉換回userdefined和進一步的過程的值。

回答

2

最好的解決方案可能有2個單獨的地圖:一個用於網址,另一個用於參數。


但似乎你並不需要地圖,因爲你只用它們作爲列表存儲的URL,而params。因此,您應該考慮使用的網址,一個列表和一個列表爲參數,可以在i您目前追加到字符串是在地圖中的關鍵將是列表索引:剛剛

urls.add(requestMappingValues[0]); 
params.add(paramsList); 

,以後你迭代這些列表以檢索插入的值。

+0

恐怕會有數據存入List的命令嗎? – 2013-04-25 09:58:26

+0

是的。訂單是使用「List」的實際要點。 – 2013-04-25 10:00:20

+0

嗨Vakh非常感謝,它的工作,我改變了我的方式放置東西,並改變你的建議。它現在就像魅力一樣。 :)建議的+1。 – 2013-04-25 10:09:36