2016-07-20 22 views
0

両方の軸でデータ文字列をソートしようとしていますが、動作しません。 コードは以下である:javafx折れ線グラフソートデータ

//defining the axes 
    final CategoryAxis xAxis = new CategoryAxis(); 
    final Axis<String> yAxis = new CategoryAxis(); 
    xAxis.setLabel("Day"); 
    yAxis.setLabel("Duration"); 
    //creating the chart 
    LineChart<String, String> dataDiagram = new LineChart<String,String>(xAxis,yAxis); 
    dataDiagram.setAnimated(false); 

    dataDiagram.setTitle("Data"); 
    Iterator<String> i = this.choosenActivities.iterator(); 
    while (i.hasNext()){ 
     String choosenActivity= i.next(); 
     Activity activity = this.activities.get(choosenActivity); 
     //defining a series 
     ObservableList<Data<String, String>> data = FXCollections.observableArrayList() ; 
     Iterator<Entry<Day,Long>> is = activity.durationPerDay.entrySet().iterator(); 
     while (is.hasNext()){ 
      Entry<Day,Long> e= is.next(); 
      //populating the series with data 
      SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); 
      Date date = new Date(); 
      date.setTime(e.getValue()); 
      data.add(new Data<String,String>(e.getKey().toString(), dateFormat.format(date))); 

     } 
     SortedList<Data<String, String>> sortedData = new SortedList<>(data, (data1, data2) -> 
     data1.getXValue().compareTo(data2.getXValue())); 
     SortedList<Data<String, String>> sortedData2 = new SortedList<>(sortedData, (data1, data2) -> 
     data1.getYValue().compareTo(data2.getYValue())); 
     dataDiagram .getData().add(new Series<>(activite.nom,sortedData2)); 
    } 

結果は、x軸がよくエントリ{2016年7月13日でソートされていることです。 2016/7/14; 2016/7/18;等}をこの順序で使用しますが、yaxisは{00:00:01; 00:00:23; 00:00:07

文字列ではなく数値として、または私の場合には文字列をソートする方法として、時間をフォーマットする別の方法(データはSystem.currentTimeMillis()によって長いものがあります)を探しています。 私はtickLabelFormatterを見たことがありますが、数字として接頭辞と接尾辞を付けることはできますが、時刻として整形することはできません。

答えて

0

の前にのデータを並べ替えることができない場合は、Stringに変換しますか? この場合、あなたはlong型の自然な順序ため、ソートに

Collections.sort(list); 

を使用することができます。 ソートする前にデータをStringに変換することが本当に必要な場合は、Comparatorというカスタムを書き込んでジョブを実行できます。

How to use Comparator in Java to sort

https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html

+0

あなたの答えのおかげで、私はそれをしようとしています。 –

関連する問題