2011-07-02 22 views
2

我有,我從數據庫中讀取數據的方法,它是這樣的:我把數據在一個地圖,我得到它在不同的順序

public Collection<Map<String, String>> getAllFieldsValues() throws Exception 
... 
mapaTemp.put("DNI", dni.toString()); 
mapaTemp.put("NOMBRE", nombre.toString()); 
mapaTemp.put("APELLIDOS", apellidos.toString()); 
mapaTemp.put("CURSO", curso.toString()); 
mapaTemp.put("DIRECCION", direccion.toString()); 
allFieldsValues.add(mapaTemp); 
... 
return allFieldsValues; 

然後,我有另一種方法來顯示數據一個JTable,但問題是我讀的順序與我放的順序不同,我按順序閱讀它。 DNI,DIRECCION,NOMBRE,APELLIDOS,CURSO。

這是一個問題,因爲當我在JTable中顯示數據時,它顯示順序錯誤。任何人都知道爲什麼會這樣?謝謝!

+0

第三段http://download.oracle.com/javase/1.4.2/docs/api/java/util/Map.html – aalku

回答

9

是什麼類型mapaTemp,你如何從地圖上讀出的值?例如Java HashMap沒有順序,所以你不能期望按照插入順序得到結果。

你應該尋找一個LinkedHashMap

5

嘗試使用LinkedHashMap的

import java.util.Iterator; 
import java.util.LinkedHashMap; 
import java.util.Map; 

public class Test { 
    public static void main(String[] args) { 
     Map mapaTemp = new LinkedHashMap(); 

     // Add some elements 
     mapaTemp.put("DNI", "1"); 
     mapaTemp.put("NOMBRE", "2"); 
     mapaTemp.put("APELLIDOS", "3"); 
     mapaTemp.put("CURSO", "4"); 
     mapaTemp.put("DIRECCION", "5"); 


     for (Iterator it = mapaTemp.keySet().iterator(); it.hasNext();) { 
      Object key = it.next(); 
      Object value = mapaTemp.get(key); 
      System.out.println(value); 
     } 

    } 

} 
相關問題