2014-12-11 85 views
2

嗨,我試圖取代它包含hashmap.Here ArrayList中的特定索引特定索引的是我想獲得它的代碼,ArrayList中的Hashmap更換

ArrayList<HashMap<String, String>> vehiclehistory = new ArrayList<HashMap<String, String>>(); 
HashMap<String, String> map = new HashMap<String, String>(); 

增加值地圖和ArrayList中,

for (int i = 0; i < user.length(); i++) { 
map.put(TAG_Latitude + i, latitude); 
map.put(TAG_Longitude + i, longitude); 
map.put(TAG_Speed + i, speed); 
map.put(TAG_Vehicle_Status + i, sleepstring); 
vehiclehistory.add(i, map); 
} 

我期待着在特定的指標像添加單獨的地圖,

map adding::{address0=965, ECR Link Road, VGP Prabhu Nagar, Medavakkam, Chennai, Tamil Nadu 600100, India, latitude0=12.906466666667, longitude0=80.204440000000, speed0=0, bus_tracking_timestamp0=2014-12-08 10:36:01, vehicle_status0=1, exceed_speed_limit0=0} 

map adding::{address1=965, ECR Link Road, VGP Prabhu Nagar, Medavakkam, Chennai, Tamil Nadu 600100, India, latitude1=12.906466666667, longitude1=80.204440000000, speed1=0, bus_tracking_timestamp1=2014-12-08 10:36:01, vehicle_status1=1, exceed_speed_limit1=0} 

但加入像,

map adding::{exceed_speed_limit1=0, exceed_speed_limit0=0, address0=965, ECR Link Road, VGP 
Prabhu Nagar, Medavakkam, Chennai, Tamil Nadu 600100, India, address1=965, ECR Link Road, VGP 
Prabhu Nagar, Medavakkam, Chennai, Tamil Nadu 600100, India, bus_tracking_timestamp1=2014-12-08 
10:36:32, bus_tracking_timestamp0=2014-12-08 10:36:01, latitude0=12.906466666667, 
latitude1=12.906466666667, vehicle_status1=1, speed1=0, longitude0=80.204440000000, 
longitude1=80.204440000000, speed0=0, vehicle_status0=1} 

地圖是追加本身和我的ArrayList的樣子,

12-11 10:16:15.291: I/System.out(28913): history list val::[{exceed_speed_limit1=0, 
exceed_speed_limit0=0, address0=965, ECR Link Road, VGP Prabhu Nagar, Medavakkam, Chennai, Tamil 
Nadu 600100, India, address1=965, ECR Link Road, VGP Prabhu Nagar, Medavakkam, Chennai, Tamil 
00100, India, bus_tracking_timestamp1=2014-12-08 10:36:32, bus_tracking_timestamp0=2014-12-08 
10:36:01, latitude0=12.906466666667, latitude1=12.906466666667, vehicle_status1=1, speed1=0, 
longitude0=80.204440000000, longitude1=80.204440000000, speed0=0, vehicle_status0=1}, 
{exceed_speed_limit1=0, exceed_speed_limit0=0, address0=965, ECR Link Road, VGP Prabhu Nagar, 
Medavakkam, Chennai, Tamil Nadu 600100, India, address1=965, ECR Link Road, VGP Prabhu Nagar, 
Medavakkam, Chennai, Tamil Nadu 600100, India, bus_tracking_timestamp1=2014-12-08 10:36:32, 
bus_tracking_timestamp0=2014-12-08 10:36:01, latitude0=12.906466666667,  
latitude1=12.906466666667, vehicle_status1=1, speed1=0, longitude0=80.204440000000, 
longitude1=80.204440000000, speed0=0,vehicle_status0=1}] 

誰能告訴如何具體添加HashMap中值ArrayList和替換特定的ArrayList的具體指標一些地圖值?

+0

HashMap中<字符串,VehicleHistoryObject>地圖=新的HashMap <字符串,VehicleHistoryObject>(); 我認爲這將是更好的方法把所有的對象哈希映射並使用任何鍵來檢索它們。 – H4SN 2014-12-11 06:12:33

回答

1

您正在添加的每個時間相同mapArrayList。你需要做一個新的HashMap實例,並填充它每一次迭代中,像這樣:

HashMap<String, String> map = null; 

for (int i = 0; i < user.length(); i++) { 
    map = new HashMap<String, String>(); 

    map.put(TAG_Latitude + i, latitude); 
    map.put(TAG_Longitude + i, longitude); 
    map.put(TAG_Speed + i, speed); 
    map.put(TAG_Vehicle_Status + i, sleepstring); 

    vehiclehistory.add(i, map); 
} 
1

將所有數據添加到Array列表中後,您想要更改特定的索引方式,請嘗試此操作。

ArrayList<HashMap<String, String>> vehiclehistory = new ArrayList<HashMap<String, String>>(); 
HashMap<String, String> map = new HashMap<String, String>(); 
map = vehiclehistory.get(index); 
map.put("key_name", "string"); 
1

您已經創建HashMap中只有一次,並稱同樣的HashMap來你ararylist是造成問題的原因做這樣的: -

ArrayList<HashMap<String, String>> vehiclehistory = new ArrayList<HashMap<String, String>>(); 
HashMap<String, String> map =null; 

for (int i = 0; i < user.length(); i++) { 
map = new HashMap<String, String>(); 

map.put(TAG_Latitude + i, latitude); 
map.put(TAG_Longitude + i, longitude); 
map.put(TAG_Speed + i, speed); 
map.put(TAG_Vehicle_Status + i, sleepstring); 
vehiclehistory.add(i, map); 
} 
1

這種嘗試...

聲明爲全局變量

Map<String, String> myLatLongHashMap = new HashMap<String, String>(); 
int k = 0; 

分配的Hashmap值

myLatLongHashMap.put("lat" + k, latvalue); 
    myLatLongHashMap.put("long" + k, longvalue); 
    myLatLongHashMap.put("TAG_Speed" + k, TAG_Speed_value+""); 
    k++; 

檢索的Hashmap值

if (myLatLongHashMap.size() > 0) 
    { 
    for (int i = 0; i < myLatLongHashMap.size()/3; i++) 
    { 
     // retrieve your lat, long value.. 
     Double lat = Double.valueOf(myLatLongHashMap.get("lat" + i)); 
     Double longg = Double.valueOf(myLatLongHashMap.get("long" + i)); 
     String speed = myLatLongHashMap.get("TAG_Speed" + i); 
    } 
    }