Simple-db-lab1
2021/10/11 23:14:14
本文主要是介绍Simple-db-lab1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Simple-db-lab1
Exercise 1
-
TupleDesc.java
TupleDesc
用来描述一张 数据表,一张数据表会包含一个或多个字段(如 Student(id, name, age, ...)),每一个字段都需要确定的知道它的 类型+字段名,其中定义了一个中间结构TDItem
封装 类型+字段名 来简化字段的管理。为了描述数据表中的多个字段,TupleDesc
类中必须要包含一个私有的TDItem
数组:private final TDItem[] tds;
剩下的函数主要是针对
tds
数组的一些操作,这里记录几个函数的实现:// 实现数据表字段的迭代器,Iterator 必须要实现 hasNext 与 next 方法。 public Iterator<tditem> iterator() { return new Iterator<tditem>(){ private int idx = 0; public boolean hasNext() { return (idx < tds.length); } public TDItem next() { if (!hasNext()) { throw new NoSuchElementException(); } return tds[idx++]; } }; }
// 构造函数1,需要申请指定长度的数组,并用参数type,field数组构造TDItem数组 public TupleDesc(Type[] typeAr, String[] fieldAr) { tds = new TDItem[typeAr.length]; for (int i = 0; i < typeAr.length; i++) { tds[i] = new TDItem(typeAr[i], fieldAr[i]); } }
// 这里由于对java语言不熟,出现一些问题。首先是java字符串的比较不能直接 == (原因见百度) // 其次没有考虑name为null的情况 public int fieldNameToIndex(String name) throws NoSuchElementException { for (int idx = 0; idx < tds.length; idx++) { if (name == null) { if (tds[idx].fieldName == null) return idx; continue; } else if (name.equals(tds[idx].fieldName)) { return idx; } } throw new NoSuchElementException("fieldNameToIndex: invalid name " + name); }
// 本实验中只有 int 与 string(固定长) 类型的数据,其定义在 /src/java/simpledb/ // common/Type.java 中 public int getSize() { int size = 0; for (int i = 0; i < tds.length; i++) { size += tds[i].fieldType.getLen(); } return size; }
执行
TupleDesc
的测试代码ant runtest -Dtest=TupleDescTest
: -
Tuple.java
这篇关于Simple-db-lab1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-20接口模块封装入门教程
- 2024-09-20请求动作封装入门教程
- 2024-09-20登录鉴权学习:新手入门教程
- 2024-09-20后台管理开发学习:新手入门指南
- 2024-09-20后台管理系统开发学习:从入门到实践
- 2024-09-20后台开发学习:从入门到初级实战指南
- 2024-09-20后台综合解决方案学习:从入门到实践
- 2024-09-20接口模块封装学习入门指南
- 2024-09-20请求动作封装学习:新手入门教程
- 2024-09-20登录鉴权入门:打造安全的用户认证系统