"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

java: get part of table

wergor 26.04.2018 - 12:24 1592 4
Posts

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4019
ich arbeite gerade an einem programm in dem ein thread eine Table mit daten befüllt und die andere die darin gespeicherten daten anzeigt.
der thread der die daten anzeigt holt sich eine kopie der Table und zeigt dann einen bestimmten bereich der werte darin an:
Code: JAVA
  Table data = data_.copy();

  //update data range to display
  data_min_ = Math.round(range_data_.getLowValue() * (data.getRowCount() - 1));
  data_max_ = Math.round(range_data_.getHighValue() * (data.getRowCount() - 1));

  for (int i = 0; i < NUM_CHANNELS; i++)
  {
    float[] data_x = Arrays.copyOfRange(data.getFloatColumn(2), data_min_, data_max_);
    float[] data_y = Arrays.copyOfRange(data.getFloatColumn(i + 3), data_min_, data_max_);
    charts_[i].setData(data_x, data_y);
gibt es eine möglichkeit einen unterbereich einer Table zu kopieren (oder das sonst wie besser zu machen)?

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Benuetzt du da die guava libs oder was ist das fuer eine Table?

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4019

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Benoetigst du die Table-Library, bzw. kriegst du deine Daten wirklich aus einem CSV oder musst du wieder als CSV speichern? Dann lass es so -> die Table Klasse ist offenbar schon etwas aelter und unterstuetzt keine Java 8 - Streams. Damit koennte man sauber via collector und predicate selektieren.
Aber selbst dann wissen wir nicht, welches Chart du da benuetzt und ob es collections unterstuetzt oder ob man dann erst wieder in ein Array konvertieren muesste.

Weiters steht in der Javadoc nirgends ob die Table.copy-Methode thread safe ist. Da wuerd ich eventuell einen Lock einbauen.

FALLS du die Table-Klasse nicht unbedingt brauchst und der Chart Collections unterstuetzt, kann man die Sache eleganter loesen.

wergor

connoisseur de mimi
Avatar
Registered: Jul 2005
Location: graz
Posts: 4019
die daten sammle ich selbst, muss also nicht unbedingt eine processing.data.Table sein. CSV export muss aber sein. ich benutze diese chart library die leider nur arrays oder eine liste von 2-dimensionalen vektoren akzeptiert. aktuell hole ich mir arrays aus der Table.
danke für den tipp mit dem lock, das schaue ich mir an.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz