⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 circularshift.java

📁 软件体系结构 KWIC三种风格的java实现
💻 JAVA
字号:
package PipeKwic;

import java.io.CharArrayWriter;
import java.io.IOException;

/**
 * 第一行数据到来后开始运作
 * 把原始数据行循环移位,将原始行和新的移位后的行输出给下一模块
 */
public class CircularShift extends Filter {

	private static final String ignore = "a#$an#$and#$as#$is#$the#$of#$"; //一些噪音词汇
	
	public CircularShift(Pipe input, Pipe output) {
		super(input, output);
	}

	/**
	 * 
	 */
	@Override
	protected void transform() {
		try {
			CharArrayWriter writer= new CharArrayWriter(); //缓冲当前行
			int c = -1;
			while((c = input.read()) != -1) {
				if(c == 10) { //回车,表示writer中取得了一行数据
					String curLine = writer.toString();//存储从输入管道中取得的当前行
					String[] words = curLine.split(" +|\t+"); //将当前行分解成多个单词
					for(int i = 0; i < words.length; i++) {
						if(ignore.indexOf((words[i] + "#$").toLowerCase()) != -1)//去掉噪音词汇打头的行
							continue;
						String shift = "";
						for(int j = i; j < (words.length + i); j++) {
							shift += words[j % words.length];
							if (j < (words.length + i - 1))
								shift += " ";
						}
						shift += "\r\n";
						output.write(shift);
						writer.reset();
					}
				} else 
					writer.write(c);
			}
			input.closeReader();
			output.closeWriter();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -