博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于面向对象(抽象数据类型)风格的kwic实现
阅读量:6627 次
发布时间:2019-06-25

本文共 3725 字,大约阅读时间需要 12 分钟。

hot3.png

ObjectOrientedMain类

/** *  */package com.jason.kwic.objectOriented;import java.io.IOException;/** * @author jasonzhang * */public class ObjectOrientedMain {	public static void main(String[] args) throws IOException {		Output output = new Output();		Alphabetizer sorter = new Alphabetizer(output);		Shift shift = new Shift(sorter);		Input input  = new Input(shift);		input.input("d:\\temp\\mykwic_in.txt");		shift.shift();		sorter.sort();	}}

Output类

/** *  */package com.jason.kwic.objectOriented;import java.util.ArrayList;/** * @author jasonzhang * */public class Output {	public void output(ArrayList
 lines) { System.out.println("output is");  for (String line : lines) { System.out.println(line);  } }}

Alphabetizer类

/** *  */package com.jason.kwic.objectOriented;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;/** * @author jasonzhang * */public class Alphabetizer {	private ArrayList
 lines = new ArrayList
(); private Output output; public Alphabetizer(Output output) { this.output = output; } public void addLine(String line) { this.lines.add(line); } public void sort() {  Collections.sort(this.lines, new AlphaabetizerComparator()); this.output.output(this.lines); } private class AlphaabetizerComparator implements Comparator
 { @Override public int compare(String o1, String o2) { if (o1 == null || o2 == null) {             throw new NullPointerException();         } int compareValue = 0; char o1FirstCharacter = o1.charAt(0); char o2FirstCharacter = o2.charAt(0); if(this.isLetter(o1FirstCharacter) && this.isLetter(o2FirstCharacter)) { //如果是小写的字母的值,则转成对应的大写的字母的值 o1FirstCharacter = this.toUpperCase(o1FirstCharacter); o2FirstCharacter = this.toUpperCase(o2FirstCharacter); compareValue = o1FirstCharacter - o2FirstCharacter; } else { throw new RuntimeException("必须是字母"); } return compareValue; } private boolean isLetter(char c) { return (c >= 65 && c <= 90) || (c >= 97 && c <= 122); } private char toUpperCase(char c) { if (Character.isLowerCase(c)) { return Character.toUpperCase(c); } return c; }         }}

Shift类

/** *  */package com.jason.kwic.objectOriented;import java.util.ArrayList;import java.util.StringTokenizer;/** * @author jasonzhang * */public class Shift {		private ArrayList
 lines = new ArrayList
(); //private ArrayList
 shifedLines = new ArrayList
(); private Alphabetizer sorter; public Shift(Alphabetizer sorter) { this.sorter = sorter; } public void addLine(String line) { this.lines.add(line); } public void shift() { for (String line : this.lines) { this.shiftLine(line); } } private void shiftLine(String line) { ArrayList
 wordList = new ArrayList
(); StringTokenizer st = new StringTokenizer(line, " "); while (st.hasMoreTokens()) { wordList.add(st.nextToken()); } int wordNums = wordList.size(); StringBuilder tempLine = new StringBuilder(); //System.out.println("shifed is"); for (int i=0; i

Input类

/** *  */package com.jason.kwic.objectOriented;import java.io.File;import java.io.IOException;import java.util.Scanner;/** * @author jasonzhang * */public class Input {	private Shift shift;		public Input(Shift shift) {		this.shift = shift;	}		public void input(String filePath) throws IOException {		File infile = new File(filePath);		Scanner sc = new Scanner(infile);		String tempLine = null;		System.out.println("input is");		while (sc.hasNextLine()) {			tempLine = sc.nextLine();			System.out.println(tempLine);			this.shift.addLine(tempLine);		}	}}

转载于:https://my.oschina.net/u/914897/blog/409936

你可能感兴趣的文章
测试妹子的呐喊:为什么总是收不到推送?
查看>>
linux NFS
查看>>
Jquery DataTable基本使用
查看>>
leetcode 674. Longest Continuous Increasing Subsequence
查看>>
Extensions in UWP Community Toolkit - SurfaceDialTextbox
查看>>
Golang 语言的单元测试和性能测试(也叫 压力测试)
查看>>
Java中CAS详解
查看>>
Java Spring MVC 错误 及 常见问题 总结
查看>>
Linux系统实战项目——sudo日志审计
查看>>
Android Application Task Activities的关系
查看>>
浅谈CSS盒子模型
查看>>
实现iFrame自适应高度,原来很简单!
查看>>
get app id
查看>>
poj 3624 0/1背包暨0/1背包的学习
查看>>
[俗一下]世界500强公司的面试问题与答案提示 [转]
查看>>
使用 Excel Services ,结合 Analysis Services 在 SharePoint 中发布报表
查看>>
SQL Server数据导入导出技术概述与比较
查看>>
format的用法
查看>>
DHCPv6 server port and DHCPv6 client port
查看>>
10个最佳的触控手式的JavaScript框架(转)
查看>>