【软件工程实践】Pig项目10-Data目录源码分析-其他包2

2021SC@SDUSC

 

本篇继续介绍其他包的变种

上篇我们已经讲过的包变种有InternalCachedBag、InternalDistinctBag、SelfSpillBag、SortedSpillBag

其中InternalCachedBag和SortedSpillBag继承自SelfSpillBag,InternalDistinctBag继承自SortedSpillBag

InternalSortedBag

继承关系,完全不出意外

public class InternalSortedBag extends SortedSpillBag 

一些注释

/**
 *
具有倍数的元组(可能)的有序集合。数据在进入时未排序存储,并且仅在需要将其转储到文件或请求第一个迭代器时进行排序。
 
* 实验发现这比开始排序的存储速度更快。
 
*
 *
我们允许使用用户定义的比较器,但在用户未指定比较器的情况下提供默认比较器。
 
*
 *
这个包没有注册到 SpillableMemoryManager。它计算要保存在内存中并主动溢出到文件中的元组数。
 
*/

 

UML图 

 

构造函数

public InternalSortedBag() {
  
this(null);       
}


public InternalSortedBag(Comparator<Tuple> comp) {
  
this(1, comp);
}


public InternalSortedBag(int bagCount, Comparator<Tuple> comp) {
  
this(bagCount, -1.0f, comp);
}


public InternalSortedBag(int bagCount, float percent, Comparator<Tuple> comp) {
   
super(bagCount, percent);
   init(bagCount, percent, comp);
}

 总觉得特别眼熟,好像这几个包基本都是这么构造的..SortedSpillBag的构造在上一篇,接下来看看测试函数 

@Test
public void testInternalSortedBag() throws Exception {

  
// check adding empty tuple
  
DataBag bg0 = new InternalSortedBag();
   bg0.add(TupleFactory.getInstance().newTuple());
   bg0.add(TupleFactory.getInstance().newTuple());
   assertEquals(bg0.size(),
2);   // 因为是非独特的

   // check equal of bags
  
DataBag bg1 = new InternalSortedBag();
   assertEquals(bg1.size(),
0);

   String[][] tupleContents =
new String[][] { { "e", "f"}, { "a", "b"}, { "c", "d" }};
  
for (int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值