我有兩個類, ExistInsert.java和TryExist.java。對於ExistInsert完整的代碼下面給出:無法將列表值轉換爲JFreeChart的可比值
package tryexist;
import java.util.ArrayList;
import java.util.List;
import org.exist.xmldb.XQueryService;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.xmldb.api.DatabaseManager;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.Database;
import org.xmldb.api.base.Resource;
import org.xmldb.api.base.ResourceIterator;
import org.xmldb.api.base.ResourceSet;
public class ExistInsert {
public static String URI = "xmldb:exist://localhost:8899/exist/xmlrpc";
public static String driver = "org.exist.xmldb.DatabaseImpl";
public static List mylist = new ArrayList();
public List insert_data(String xquery){
try{
Class c1 = Class.forName(driver);
Database database=(Database) c1.newInstance();
String collectionPath= "/db";
DatabaseManager.registerDatabase(database);
Collection col=DatabaseManager.getCollection(URI+collectionPath);
XQueryService service = (XQueryService) col.getService("XQueryService","1.0");
service.setProperty("indent", "yes");
ResourceSet result = service.query(xquery);
ResourceIterator i = result.getIterator();
while(i.hasMoreResources()){
Resource r =i.nextResource();
mylist.add(((String)r.getContent()));
}
}
catch(Exception e){
System.out.println(e);
}
return mylist;
}
public void draw_bar(List values, List years){
try{
//DefaultPieDataset data = new DefaultPieDataset();
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for(int j=0;j<values.size();j++){
dataset.addValue();
}
//JFreeChart chart = ChartFactory.createPieChart("TEST PEICHART", data, true, true, Locale.ENGLISH);
JFreeChart chart2 = ChartFactory.createLineChart("Assets", "X","Y",dataset , PlotOrientation.VERTICAL, true, true, true);
ChartFrame frame = new ChartFrame("TEST", chart2);
frame.setVisible(true);
frame.setSize(500, 500);
}
catch(Exception e){
System.out.println(e);
}
}
}
這裏的功能insert_data執行XQuery和結果返回到字符串列表。函數draw_bar使用參數viz值和年份作爲列表繪製條形圖。我面臨的主要問題是將List轉換爲Comparable,這是dataset.addValue()的要求。在我的主程序TryExist.java我:
package tryexist;
import java.util.ArrayList;
import java.util.List;
public class Tryexist {
public static void main(String[] args) throws Exception{
ExistInsert exist = new ExistInsert();
String query = "Some query Here"
List resp = exist.insert_data(query);
List years = new ArrayList();
for (int i=2060;i<=2064;i++){
years.add(i);
}
System.out.println(years);
System.out.println(resp);
exist.draw_bar(resp,years);
}
}
現在執行的查詢返回年,RESP爲[2060,2061,2062,2063,2064]和[32905657,3091102752,4756935449,7954664475,11668355950 ]。那麼如何在ExistInsert.java中編輯dataset.addValue(),以便我可以將上面獲得的值resp和years傳遞給draw_bar,以便爲傳遞的數據製作條形圖。
這兩種方法的addValue [這裏記錄(http://www.jfree.org/jfreechart/api/gjdoc/org/jfree/data/category/DefaultCategoryDataset.html)不匹配您指定的簽名。您的列表包含什麼類型的值。爲什麼不使用泛型類型安全的集合('List'而不是'List'),爲什麼不尊重Java命名約定?爲什麼你想要*作爲第二和第三個參數傳遞?即什麼是表的第三行和第三列? –