簡體   English   中英

Map中的Ljava.lang.String

[英]Ljava.lang.String in Map

我很困惑......

我有這個方法,可以從視圖中的URL中獲取參數:

    public static Map<String, String[]> getParameters() {
    final Set<Map.Entry<String,String[]>> entries = request().queryString().entrySet();
    Map <String, String[]> parameters = new HashMap <String, String[]>();

    for (Map.Entry<String,String[]> entry : entries) {
        final String key = entry.getKey();
        String[] value = entry.getValue();
        parameters.put(key, value);
    }

    System.out.println(parameters);
    return parameters;
}

當我打印參數時,這是我通常得到的:

{Y軸= [Ljava.lang.String; @ 4ddf465,

我試圖改變價值

String value = Arrays.toString(entry.getValue());

然后它顯示正常: {yAxis=[Choose, Choose]

但我不能通過值,因為它們都是字符串而不是列表。 我希望將String []中的值與鍵相關聯,這樣我就可以通過它進行迭代。 當它只是一個字符串時我無法迭代。 我確信這是一個簡單的問題,但我似乎無法弄明白。

請幫我...

不幸的是,所有數組的toString()都默認為Object提供的方法,它打印了類的內部描述和“identity”hashCode。

如果您的目錄結構中有String[] ,則必須自己執行toString,默認情況下不會執行您想要/期望的操作。 解決此問題的一種方法是使用List<String>例如ArrayList<String> ,它將按預期打印。

它是一個字符串數組,而不僅僅是一個字符串。 您可以遍歷數組並獲取映射到鍵的(多個)字符串值。

如評論中所述,

for (String value: entry.getValue())
{ 
    System.out.println(value);
}

如果要更改toString()以反映字符串表示的自己的實現,則必須編寫包含數據的自己的對象並覆蓋toString()

問題來自字符串數組上的toString方法的默認實現。 那是[Ljav.lang.String; @ 44df465來自的地方。

創建自己的類來保存值並實現toString方法以按您希望的方式輸出值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM