在JAVA实现DataTable对象(四)——单元测试

由于好久没来这里了,发现有几个朋友想要代码参考一下,所以上传到这里,感兴趣的朋友可以下来参考 

http://files.cnblogs.com/hjzhang/data.rar

 

在实现DataTable的基本功能后,我们对我们实现的对象进行一下测试,测试代码如下:

   1:  import java.util.List;
   2:  import org.junit.After;
   3:  import org.junit.Assert;
   4:  import org.junit.Before;
   5:  import org.junit.Test;
   6:   
   7:   
   8:  /**  
   9:       * 此类描述的是:  测试数据表对象DataTable对象相关功能是否正常
  10:       * @author: James Cheung
  11:       * @version: 2.0
  12:       */
  13:  public class DataTableTest {
  14:   
  15:      @Before
  16:      public void init() {
  17:   
  18:      }
  19:   
  20:      @After
  21:      public void dispose() {
  22:   
  23:      }
  24:   
  25:      
  26:      @Test
  27:      public void tableInitTest() {
  28:          DataTable table = new DataTable(); //新建一个数据表对象,不带构造函数参数
  29:          fillTable(table);//填充数据
  30:          Assert.assertNotNull(table);
  31:          Assert.assertEquals(20, table.getColumns().size());
  32:          Assert.assertEquals(100, table.getRows().size());
  33:          //printTable(table);
  34:          System.out.print("------------------------------------------------------------------------------------------------------------------------\n");
  35:          table = new DataTable("TestTable");//新建一个数据表对象,带表名为参数
  36:          //测试添加数据列
  37:          fillTable(table);//填充数据
  38:          Assert.assertNotNull(table);
  39:          //printTable(table);
  40:      }
  41:   
  42:      @Test
  43:      public void tableSelectTest() throws Exception {
  44:          //测试数据表的选择过滤方法
  45:          DataTable table = new DataTable(); //新建一个数据表对象,不带构造函数参数
  46:          fillTable(table);//填充数据
  47:          List<DataRow> rows = table.select("col_1> 2 && col_2<10");
  48:          Assert.assertNotNull(rows);
  49:          Assert.assertEquals(2, rows.size());
  50:          //测试查询指定列
  51:          DataTable filterResult = table.select("col_1>2 && col_2<10",
  52:                  "col_1,col_2,col_3,col_4".split(","),
  53:                  true);
  54:          printTable(filterResult);
  55:   
  56:      }
  57:   
  58:      private void printTable(DataTable table) {
  59:   
  60:          for (int i = 0; i < table.getTotalCount(); i++) {
  61:              for (int j = 0; j < table.getColumns().size(); j++) {
  62:                  System.out.print(table.getValue(i, j));
  63:                  if (j < 19)
  64:                      System.out.print(" , ");
  65:              }
  66:              System.out.print("\n");
  67:          }
  68:      }
  69:   
  70:      private void fillTable(DataTable table) {
  71:          try {
  72:              //填充20列数据
  73:              for (int i = 0; i < 20; i++) {
  74:                  table.addColumn("Col_" + i, i % 13);
  75:              }
  76:              //填充100行数据
  77:              for (int i = 0; i < 100; i++) {
  78:                  DataRow row = table.newRow();
  79:                  for (int j = 0; j < 20; j++) {
  80:                      //循环每列加入数据
  81:                      row.setValue(j, i * j);
  82:                  }
  83:                  table.addRow(row);
  84:              }
  85:          } catch (Exception e) {
  86:              e.printStackTrace();
  87:          }
  88:      }
  89:  }
 
后记:仔细看的朋友可能发现了,DataTable里还有几个函数没有实现,那几个函数是我们后面要实现的基于DataTable进行分组汇总计算所需的功能,有兴趣的朋友也可以自己来实现一套试试,我这里可以提个醒给大家,下面是类似功能的测试代码:
 
  newTable = dataTable.Select("tableName", "count(Name),sum(11) aaa,sum(222) name,avg(aa),last,first,max,min aa,Name", "", "Name");

转载于:https://www.cnblogs.com/hjzhang/archive/2011/05/21/2052804.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataTable 是 ADO.NET 里面的一个重要概念,它代表着一张数据表,可以对其的数据进行操作。在 Java ,虽然没有官方的 DataTable ,但是我们可以通过编写代码来实现一个似的对象。 下面,我将介绍一下如何在 Java 实现 DataTable 对象。 1. 创建 DataTable 首先,我们需要创建一个 DataTable 来代表数据表。这个应该具有以下基本属性: - 表名:代表数据表的名称。 - 列名:代表数据表的列名。 - 行数据:代表数据表的行数据。 代码如下: ```java public class DataTable { private String tableName; private List<String> columnNames; private List<List<Object>> rows; public DataTable(String tableName, List<String> columnNames) { this.tableName = tableName; this.columnNames = columnNames; this.rows = new ArrayList<>(); } // 省略 get/set 方法 } ``` 2. 添加数据 接下来,我们需要添加数据到数据表。我们可以提供一个 addRow 方法来添加一行数据。这个方法需要接受一个 List<Object> 参数,代表一行数据。在该方法,我们可以将这一行数据添加到 rows 列表。 代码如下: ```java public void addRow(List<Object> rowData) { this.rows.add(rowData); } ``` 3. 获取数据 为了获取数据表的数据,我们可以提供一个 getRows 方法来获取所有的行数据。该方法返回一个 List<List<Object>> 型的数据。 代码如下: ```java public List<List<Object>> getRows() { return this.rows; } ``` 4. 查询数据 为了查询数据表的数据,我们可以提供一个 select 方法来根据条件查询数据。该方法接受一个 Predicate<List<Object>> 型的参数,代表查询条件。在该方法,我们可以使用 Java 8 的 Stream API 来筛选符合条件的数据。 代码如下: ```java public List<List<Object>> select(Predicate<List<Object>> predicate) { return this.rows.stream().filter(predicate).collect(Collectors.toList()); } ``` 5. 更新数据 为了更新数据表的数据,我们可以提供一个 update 方法来更新符合条件的数据。该方法需要接受一个 Predicate<List<Object>> 型的参数,代表更新条件,以及一个 Consumer<List<Object>> 型的参数,代表更新操作。在该方法,我们可以使用 Java 8 的 Stream API 来筛选符合条件的数据,并进行更新操作。 代码如下: ```java public void update(Predicate<List<Object>> predicate, Consumer<List<Object>> updater) { this.rows.stream().filter(predicate).forEach(updater); } ``` 6. 删除数据 为了删除数据表的数据,我们可以提供一个 delete 方法来删除符合条件的数据。该方法需要接受一个 Predicate<List<Object>> 型的参数,代表删除条件。在该方法,我们可以使用 Java 8 的 Stream API 来筛选符合条件的数据,并进行删除操作。 代码如下: ```java public void delete(Predicate<List<Object>> predicate) { this.rows.removeIf(predicate); } ``` 7. 完整代码 完整的 DataTable 代码如下: ```java import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.stream.Collectors; public class DataTable { private String tableName; private List<String> columnNames; private List<List<Object>> rows; public DataTable(String tableName, List<String> columnNames) { this.tableName = tableName; this.columnNames = columnNames; this.rows = new ArrayList<>(); } public void addRow(List<Object> rowData) { this.rows.add(rowData); } public List<List<Object>> getRows() { return this.rows; } public List<List<Object>> select(Predicate<List<Object>> predicate) { return this.rows.stream().filter(predicate).collect(Collectors.toList()); } public void update(Predicate<List<Object>> predicate, Consumer<List<Object>> updater) { this.rows.stream().filter(predicate).forEach(updater); } public void delete(Predicate<List<Object>> predicate) { this.rows.removeIf(predicate); } // 省略 get/set 方法 } ``` 这样,我们就成功地实现了一个简单的 DataTable 。当然,这个还有很多可以改进的地方,比如支持数据型、索引等功能。不过,以上代码足以满足大部分的数据操作需求了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值