2010-06-22 54 views
1

我處理雙打和尋找的這個「雙」相當於...nameValuePair數組列表的數值等價物?

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("lat",lat)); 
nameValuePairs.add(new BasicNameValuePair("lng",lng)); 

編輯//我正在做一個HTTP請求,我認爲需要將緯度值映射到一個PHP lat變量和long變量作爲php變量。

謝謝!

回答

3

如果您必須使用NameValuePair,有兩種可能的解決方案。

您可以將Map轉換爲NameValuePairList

List<NameValuePair> convertParameters(Map<String, Double> parameters) { 
    List<NameValuePair> result = new ArrayList<NameValuePair>(); 

    for (Entry<String, Double> entry : parameters.entrySet()) { 
     result.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString())); 
    } 

    return result; 
} 

或者你可以實現一個新的NameValuePair處理Double值:

public class DoubleNameValuePair implements NameValuePair { 

    String name; 

    double value; 

    public DoubleNameValuePair(String name, double value) { 
     this.name = name; 
     this.value = value; 
    } 

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

    @Override 
    public String getValue() { 
     return Double.toString(value); 
    } 

} 

在後一種情況下,你可以使用可直接傳遞給UrlEncodedFormEntity構造函數的NameValuePair列表:

List<NameValuePair> parameters = new ArrayList<NameValuePair>(); 
parameters.add(new DoubleNameValuePair("lat", 1.0)); 
parameters.add(new DoubleNameValuePair("lng", 2.0)); 
1

AbstractMap.SimpleEntry是表示通用元組的JDK類。不幸的是,它是一個內部類,使得它非常非常冗長(特別是一旦你使用類型參數)。此外,與double值一起使用它需要打包(可能使用自動裝箱),這會增加更多開銷。

你可能想寫自己的StringDoublePair類 - 這並不難。

1

爲什麼你不使用地圖?

Map<String, Double> nameValuePairs = new HashMap<String, Double>(); 
nameValuePairs.put("lat", lat); 
nameValuePairs.put("lng", lng); 
+0

試圖發送一個HTTP請求,如果我這樣做,我收到了.. 「構造UrlEncodedFormEntity(地圖<字符串,雙>)是未定義」 error on line .. httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); – Skizit 2010-06-22 09:26:16

1

也許這樣嗎?

ArrayList<double[]> latLons = new ArrayList<double[]>(); 
latlons.add(new double[]{60.0, 20.0}); 
+0

(我有點失落,這個問題...) – 2010-06-22 09:22:47

+0

好吧,你看我正在做一個HTTP請求,我認爲需要將lat值映射到一個php lat變量,並將long值映射到一個php變量。很抱歉,如果很明顯如何做到這一點,我對這些概念頗爲陌生。 – Skizit 2010-06-22 09:27:43

0

我假設你在談論Apache HttpClient中使用的NameValuePair。該值必須是字符串。你必須將其轉換爲字符串。

這是我做的,

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("lat",""+lat)); 
nameValuePairs.add(new BasicNameValuePair("lng",""+lng)); 
+0

問題是我然後必須做一些與雙的計算,以便不會正好工作:( – Skizit 2010-06-22 11:57:31