标签:return name idx Simple TDItem db int lab1 tds
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
标签:return,name,idx,Simple,TDItem,db,int,lab1,tds 来源: https://www.cnblogs.com/keven137/p/15395300.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。