大家好,我用FusionCharts作圖表
但不知怎麼固定順序
例如:
我從SQL撈出小明,阿華,美美的成績平均後放入FusionCharts
但他可能會變成阿華,小明,美美
順序錯亂讓我很困擾,請問有甚麼方法可以解決的嗎?
謝謝
以下是我的code
n1.jsp
<%
Show sh=new Show();
List<axmt620> ax=sh.Getaxmt620();
String pro[]={"空壓成品","油壓成品","油壓修理","系統","總合"};
double proform[]=new double [11];
for(int i=0;i<proform.length;i++){proform[i]=0;}
//計算過程省略
%>
<!DOCTYPE html>
<html>
<body>
<div id="chart"></div>
<%@page import="bean.FusionCharts" %>
<%
String chartXML = "<chart __attributes__>__set__</chart>";
String attributeTemplate = "__key__=\"__value__\" ";
String setXMLTemplate = "<set label=\"__label__\" value=\"__value__\" />";
Map<String, String> chartobj = new HashMap<String, String>();
chartobj.put("caption", "金額");
Map<String, String> dataobj = new HashMap<String, String>();
for(int i=0;i<pro.length;i++){dataobj.put(pro[i] ,Double.toString(proform[i]));}
ArrayList<String> chartAttributeList = new ArrayList<String>();
ArrayList<String> setList = new ArrayList<String>();
for(Map.Entry cobj:chartobj.entrySet())
{
String tempAttributeTemplate = attributeTemplate;
tempAttributeTemplate = tempAttributeTemplate.replaceAll("__key__", (String) cobj.getKey());
tempAttributeTemplate = tempAttributeTemplate.replaceAll("__value__", (String) cobj.getValue());
chartAttributeList.add(tempAttributeTemplate);
String tempSetTemplate = setXMLTemplate;
tempSetTemplate = tempSetTemplate.replaceAll("__label__", (String) dobj.getKey());
tempSetTemplate = tempSetTemplate.replaceAll("__value__", (String) dobj.getValue());
setList.add(tempSetTemplate);
}
StringBuilder chartAttributeString = new StringBuilder();
for(String s: chartAttributeList)
chartAttributeString.append(" " + s);
StringBuilder setAttributeString = new StringBuilder();
for(String s: setList)
setAttributeString.append(s);
chartXML = chartXML.replaceAll("__attributes__",chartAttributeString.toString());
chartXML = chartXML.replaceAll("__set__", setAttributeString.toString());
FusionCharts columnChart= new FusionCharts(
"bar2d",
"chart1",// chartId
"800","500",// chartWidth, chartHeight
"chart",// chartContainer
"xml",// dataFormat
chartXML //dataSource
);
%>
<%=columnChart.render()%></br>
</body>
</html>
後來有點時間幫你看了一下,我想問題是出在這。
Map<String, String> dataobj = new HashMap<String, String>();
java 的 Map 也是無序的,也就是 Map 物件產生時,裡面的順序不重要,所以會亂跳。
在 python 有 ordereddict 可以產生有序的 dict 物件,但java我就不知道了。
不過我之後的解法會是像我上面說的。
[
{},
{},…
{}
]
利用有序的陣列,依序每一筆的資料值。