Solution to Diamond Kinetics problem set using Java Predicates
1.Implement data structure for sample swing data in 'latestSwing.csv'
2.Implement 4 methods for searching continuous values
3.Modify previous solution in DKSwing using Java predicates to improve code re-use and readability.
SwingTable.java-
ArrayList backed ADT.
*did away with parrellel indexMap.
SwingSample.java
Object representing 1 sample (row) of 7 data points (in order)
- Timestamp, ax, ay, az, wx, wy, wz
- Parameters are of inner enum class, matching 7 data point labels
- *Added 'int index' data member to preserve ref to sequential order through filtering
IndexPair.java
Object represents starting and ending index of continuous runs of values.
Allows for return of multiple indices.
Column.java
Enum class defining reference variables for sensor data of SwingSample object.
SamplePredicates.java
Predicate class containing 2 static Predicates and a static filtering method.
Returns an ArrayList of IndexPair objects representing all contiguous runs of
valid samples.
filterData()
uses *Java.util.stream* and passed predicate param to populate a list with all samples meeting
the search criteria. Filtered data is then iterated over to locate runs of adjacency matching
the desired length. Runs are stored as IndexPairs and returned as an ArrayList.
-Currently SwingTable indices start at 1 to mirror logical indexing of csv spreadsheet.
-csv file contains proprietary data, not included in public repo.