java: get part of table

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/java-get-part-of-table_251224/page_1 - zur Vollversion wechseln!


wergor schrieb am 26.04.2018 um 12:24

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 schrieb am 26.04.2018 um 12:29

Benuetzt du da die guava libs oder was ist das fuer eine Table?


wergor schrieb am 26.04.2018 um 12:44

http://processing.github.io/process...data/Table.html


Obermotz schrieb am 26.04.2018 um 14:23

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 schrieb am 27.04.2018 um 08:47

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.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025