2015-06-24 45 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]

相关问题