あなたがやろうとしていることを完全に理解したかどうかはわかりませんが、私が収集したことから、後で構造化されたテーブルを作成できるように、任意のデータの行を保存したいと考えています。この場合 (Java を使用していると仮定して) 私がすることColumn
は、「値」プロパティだけを持つ非常に単純なインターフェイスを作成することです。
public interface Column {
String value;
}
次に、次を実装して列を作成できますColumn
。
public class Key implements Column {
String value = new String();
public Key(String keyValue){
this.value = keyValue;
}
}
DataRow
そのため、オブジェクトに実際のデータが含まれるクラス(または好きなもの) を作成できます。たとえば、データを追加できるようにするメソッドをそのクラスに含めることができます。
public class DataRow {
List<Column> data = new ArrayList<Column>();
public DataRow(String key){
this.setColumn(new Key(key));
}
public void setColumn(Column columnData) {
this.data.add(columnData);
}
public Column getColumn(Class column){
for(Column c : this.data){
if(c.getClass().equals(column)){
return c;
}
}
return null;
}
}
setColumn()
ご覧のとおり、新しいColumn
オブジェクトを指定してメソッドを呼び出すことができます。これにより、任意のタイプの任意のデータをDataRow
オブジェクトに追加できます。List
次に、いくつかのテーブルを作成するために、 ofDataRows
およびof クラスを受け取る関数を使用できます。この関数は、List
指定された行からのデータを持つオブジェクトのみを返します。
public List<DataRow> createTable(List<DataRow> data, List<Class<? extends Column>> columns){
List<DataRow> table = new ArrayList<DataRow>();
for(DataRow row : data){
DataRow ret = new DataRow(row.getColumn(Key.class).value);
for(Class column : columns){
if(row.getColumn(column.getClass()) != null )ret.setColumn(row.getColumn(column.getClass()));
}
table.add(ret);
}
return table;
}
これにより、データを使用してテーブルを「作成」し、テーブルに含める列を作成できます。
このコードはアイデアを伝えるために書いたものであり、現時点ではかなり雑然としていることに注意してください。しかし、これが少しでもあなたの役に立てば幸いです。