2015-06-24 48 views
3

的ArrayList我有一個HashMap像這樣:如何將對象的一個​​HashMap轉換成字符串

Hashmap<String, Object> map = new Hashmap<String, Object>(); 
map.put(1, {id_student:"1;2;3"}); 
map.put(2, {id_student:"4;5"}); 

我想要得到的值,並把它放在一個ArrayList,如:

array = [0] - 1 
     [1] - 2 
     [2] - 3 
     [3] - 4 
     [4] - 5 

我試圖做的:

private Set<String> checked = new TreeSet<String>(); 

String idsAlunos = ""; 
for (Iterator<Map.Entry<String, GPSEscolas>> it = aMap.entrySet().iterator(); it.hasNext();) { 
    Map.Entry<String, GPSEscolas> entry = it.next(); 

    String id_escola = entry.getKey(); 
    String ids_aluno = entry.getValue().getAlunos(); 

    idsAlunos += ";" + ids_aluno; 

    checked.add(idsAlunos.substring(1)); 
} 

但我從上面的代碼得到這個結果:[4, 4;1;2;3, 4;5, 4;5;1;2;3]

+0

在android中編譯?它不在Java 8中。'map.put'不會採用'{..}'值。你的意思是'map.put(「1」,new String [] {「1」,「2」,「3」});'? – MadConan

回答

1

你必須做的步驟:

  1. 遍歷映射鍵或獲取地圖值作爲收集和迭代這一點。
  2. 將每個值的逗號分隔值String解析爲單個令牌並將它們添加到所需的List或Set值。
  3. 一旦你有它的值的列表進行排序。

如果您不想有重複項,請使用Set。

看起來像JSON。你在使用JSONSimple嗎?也許你應該。

下面是一個例子。

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

/** 
* MapToArrayExample 
* User: mduffy 
* Date: 6/24/2015 
* Time: 3:17 PM 
* @link http://stackoverflow.com/questions/31034737/how-to-convert-a-hashmap-of-objects-into-an-arraylist-of-strings/31034794?noredirect=1#comment50094533_31034794 
*/ 
public class MapToArrayExample { 

    public static void main(String[] args) { 
     Map<Integer, String> data = new HashMap<Integer, String>() {{ 
      put(1, "3, 2, 3, 3, 1"); 
      put(2, "4, 5, 5, 6, 7"); 
     }}; 
     List<String> result = parseMapOfJson(data); 
     System.out.println(result); 
    } 

    public static List<String> parseMapOfJson(Map<Integer, String> map) { 
     List<String> values = new ArrayList<String>(); 
     for (Integer key : map.keySet()) { 
      String csv = map.get(key); 
      String [] tokens = csv.split(","); 
      for (String token : tokens) { 
       values.add(token.trim()); 
      } 
     } 
     Collections.sort(values); 
     return values; 
    } 
} 
+0

我將該地圖轉換爲json:'hashObject = new Gson(); final String json = hashObject.toJson(aMap);' – AND4011002849

+0

你能告訴我更多的細節怎麼做嗎? – AND4011002849

0

試試這個:

HashMap<String, String> map = new HashMap<String, String>(); 
    map.put("1", "1;2;3"); 
    map.put("2", "4;5"); 

    Set<String> checked = new TreeSet<String>(); 

    for (Iterator i = map.entrySet().iterator(); i.hasNext();) { 
     Map.Entry<String, String> e = (Map.Entry<String, String>) i.next(); 
     checked.addAll(Arrays.asList(e.getValue().split("\\s*;\\s*"))); 
    } 
    System.out.println(checked); 
1

好吧,我知道了,它是這樣的:

idsAlunos = ""; 

for (Iterator<Map.Entry<String, GPSEscolas>> it = aMap.entrySet().iterator(); it.hasNext();) { 
    Map.Entry<String, GPSEscolas> entry = it.next(); 

    String id_escola = entry.getKey(); 
    String ids_aluno = entry.getValue().getAlunos(); 

    idsAlunos += ";" + ids_aluno; 

    String[] array = idsAlunos.substring(1).split(";"); 

    list = new ArrayList<String>(Arrays.asList(array)); 

} 

System.out.println(list); 

這給了我我想要的,那就是:[4,5,1,2,3]

相關問題