1. 程式人生 > >java8 httpclient NameValuePair轉換14行程式碼一行搞定!

java8 httpclient NameValuePair轉換14行程式碼一行搞定!

工作中,我們常常會通過httpclient呼叫一些三方提供的api, 進行引數傳遞的時候會用NameValuePair[ ]

於是我們同事寫了一個方法封裝一下 NameValuePair,將map中用  引數key ,引數值value,做一個轉換

如下:

public static NameValuePair[] convertMap2NameValuePairs(Map<String, String> data) {
        Set<Map.Entry<String, String>> entrySet = data.entrySet();
        int size = entrySet.size();
        NameValuePair[] nameValuePairs = new NameValuePair[size];
        List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
        for (Map.Entry<String, String> entry : entrySet) {
            String key = entry.getKey();
            String value = entry.getValue();
            NameValuePair nameValuePair = new NameValuePair(key, value);
            nameValuePairList.add(nameValuePair);
        }
        for (int i = 0; i < nameValuePairList.size(); i++) {
            nameValuePairs[i] = nameValuePairList.get(i);
        }
        return nameValuePairs;
    }

看了上面的程式碼,覺得寫的太長,用java8 寫了一個簡化版的,一行程式碼。如下:

public static NameValuePair[] convertMap2NameValuePairs(Map<String, String> data) {
        return data.entrySet().stream().map(entry -> new NameValuePair(entry.getKey(), entry.getValue())).toArray(NameValuePair[]::new);
    }

java8 的新特性確實可以讓程式碼變得更加簡潔,值得我們去學習和使用!