KWIC系统之事件架构实现(排序模块,拆分模块,输入模块)

该博客介绍了KWIC系统中的事件架构实现,包括排序模块(Alphabetizer),拆分模块(CircularShifter)和输入模块(Input)。排序模块按照字典序对字符串进行排序,拆分模块将字符串按规则拆分成多个子字符串,并添加到已拆解字符串库中,而输入模块负责监听用户输入,根据用户指令执行添加、删除和打印操作。
摘要由CSDN通过智能技术生成

package kwic.es;
import java.util.Observable;
import java.util.Observer;
//排序器,将所有字符串按照字典序排序
//监听拆解后字符串集
public class Alphabetizer implements Observer{
  public void update(Observable observable, Object arg){
    LineStorageWrapper shifts = (LineStorageWrapper) observable;
    LineStorageChangeEvent event = (LineStorageChangeEvent) arg;
    //在这里由于删除后原序列中余留的行的顺序并不会改变,所以不用再添加删除情况了
    switch(event.getType()){
    case LineStorageChangeEvent.ADD:
      int count = shifts.getLineCount();
      String shift = shifts.getLineAsString(count - 1);
      for(int i = 0; i < (count - 1); i++){
        if(shift.compareTo(shifts.getLineAsString(i)) <= 0){
           shifts.insertLine(shifts.getLine(count - 1), i);
           shifts.deleteLine(count);
           break;
        }          
      }
      break;
    default:
      break;     
    }
  }
}

 

 

package kwic.es;
import java.util.Observable;
import java.util.Observer;
import java.util.ArrayList;
import java.util.StringTokenizer;
//拆分器,按规则将字符串拆分为多个字符串,将拆分后的所有字符串添加到已拆解字符串库中
//监听拆解前字符串库,也就是主程序KWIC中的lines集合
public class CircularShifter implements Observer{
  private LineStorageWrapper shifts_;
  public CircularShi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值