簡體   English   中英

如何轉換列表<namevaluepair>進入列表<map.entry<string, string> &gt;? </map.entry<string,></namevaluepair>

[英]How to convert List<NameValuePair> into a List<Map.Entry<String, String>>?

I'm capturing parameters from a request url using com.apache.http.NameValuePair which basically store those params in a List<NameValuePair> . 要對這些參數進行某些檢查和驗證,我需要將該列表轉換為List<Map.Entry<String, String>> 有沒有辦法進行這種轉換?

像這樣的東西:

http://127.0.0.1:9898/v3/ {project_id}/eip/publicips?fields=id&fields=owner

如何將 List<NameValuePair> 轉換為 hashMap<String, String>?

Map<String, String> mapped = list.stream().collect(
        Collectors.toMap(NameValuePair::getName, NameValuePair::getValue));

這對我不起作用。 因為有很多字段鍵。

您可以將每個NameValuePair轉換為Map.Entry然后將它們收集到List

List<Map.Entry<String, String>> entries = list.stream()
                                              .map(n->new AbstractMap.SimpleEntry<String, String>(n.getName(), n.getValue())
                                              .collect(Collectors.toList());

可能您弄亂了代碼摘錄中未包含的其他內容。 我試圖重現您的案例,它在我的設置中有效。


public class Main {

    public static void main(String[] args) {
        List<NameValuePair> list = new ArrayList<>();
        MyNameValuePair myNameValuePair = new MyNameValuePair();
        myNameValuePair.setKvKey("i");
        list.add(myNameValuePair);
        myNameValuePair = new MyNameValuePair();
        myNameValuePair.setKvKey("j");
        list.add(myNameValuePair);
        myNameValuePair = new MyNameValuePair();
        myNameValuePair.setKvKey("k");
        list.add(myNameValuePair);
        Map<String, String> mapped = new HashMap<>();
        mapped = list.stream().collect(
                Collectors.toMap(NameValuePair::getName, NameValuePair::getValue));

        System.out.println(mapped);
    }
}

class MyNameValuePair implements NameValuePair {
    private String kvKey;
    public void setKvKey(String kvKey){
        this.kvKey = kvKey;
    }

    @Override
    public String getName() {
        return kvKey;
    }

    @Override
    public String getValue() {
        return "val";
    }
}

暫無
暫無

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

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