java: get part of table
wergor 26.04.2018 - 12:24 1700 4
wergor
connoisseur de mimi
|
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: 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
|
Benuetzt du da die guava libs oder was ist das fuer eine Table?
|
wergor
connoisseur de mimi
|
|
Obermotz
Fünfzylindernazi
|
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
|
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.
|