2019独角兽企业重金招聘Python工程师标准>>>

ImplicitlyCallMain类

/*** */
package com.jason.kwic.implicitlyCall;import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Scanner;/*** @author jasonzhang**/
public class ImplicitlyCallMain {public static void main(String[] args) throws IOException {Shift shift = new Shift();Alphabetizer sort = new Alphabetizer();//增加观察者shift.addObserver(sort);File infile = new File("d:\\temp\\mykwic_in.txt");Scanner sc = new Scanner(infile);String tempLine = null;System.out.println("input is");while (sc.hasNextLine()) {tempLine = sc.nextLine();System.out.println(tempLine);shift.addLine(tempLine);}List<String> sortedLines = sort.getSortedLines();System.out.println("output is");for (String line : sortedLines) {System.out.println(line);}}
}

Shift类

/*** */
package com.jason.kwic.implicitlyCall;import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.StringTokenizer;/*** @author jasonzhang**/
public class Shift extends Observable  {public void addLine(String line) {ArrayList<String> wordList = new ArrayList<String>();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");List<String> shiftedLines = new ArrayList<String>();for (int i=0; i<wordNums; i++) {for (int j=(wordNums - 1 -i); j < wordNums; j++) {tempLine.append(wordList.get(j)).append(' ');}for (int k=0; k<(wordNums - 1 -i); k++) {if (k != (wordNums - i - 2)) {tempLine.append(wordList.get(k)).append(' ');} else {tempLine.append(wordList.get(k));}}//System.out.println(tempLine.toString());//this.shifedLines.add(tempLine.toString());shiftedLines.add(tempLine.toString());tempLine.delete(0, tempLine.length());}super.setChanged();super.notifyObservers(shiftedLines);}}

Alphabetizer类

/*** */
package com.jason.kwic.implicitlyCall;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Observable;
import java.util.Observer;/*** @author jasonzhang**/
public class Alphabetizer implements Observer {private List<String> sortedLines = new ArrayList<String>();/* (non-Javadoc)* @see java.util.Observer#update(java.util.Observable, java.lang.Object)*/@Overridepublic void update(Observable o, Object arg) {List<String> lines = (List<String>) arg;this.sortedLines.addAll(lines);Collections.sort(this.sortedLines, new AlphaabetizerComparator());}public List<String> getSortedLines() {return this.sortedLines;}private class AlphaabetizerComparator implements Comparator<String> {@Overridepublic 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;}}
}

实际上就是观察者模式,使用了jdk中的Observable和Observer

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

基于隐式调用风格的kwic实现相关推荐

  1. 20200918:【广发金融工程】2018年重磅专题系列之九:基于隐马尔科夫模型的选股策略研究

    参考链接:https://www.sohu.com/a/252454782_465470 [广发金融工程]2018年重磅专题系列之九:基于隐马尔科夫模型的选股策略研究 2018-09-07 11:26 ...

  2. CVPR 2021 | 澳洲国立大学提出基于模型的图像风格迁移

    ©作者|侯云钟 学校|澳洲国立大学博士生 研究方向|计算机视觉 本文从另外一个角度解读,澳洲国立大学郑良老师实验室 CVPR 2021 新工作.一般而言,我们需要同时利用两张图片完成图像的风格迁移(s ...

  3. javascript --- [有趣的条件]双等号的隐式调用和数据劫持

    1 双等号的隐式调用和数据劫持 求下面条件,在a为什么样时,等号成立 if(a == 1 && a == 2 && a == 3){console.log('等号成立' ...

  4. 基于隐马尔可夫模型的有监督词性标注

    转载自:http://blog.csdn.net/xum2008/article/details/38309605 词性标注(Part-of-Speech tagging 或 POS tagging) ...

  5. python地图匹配_基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法

    1. 摘要 本篇博客简单介绍下用隐马尔科夫模型(Hidden Markov Model, HMM)来解决地图匹配(Map-Matching)问题.转载请注明网址. 2. Map-Matching(MM ...

  6. Android Activity的隐式调用(跨进程)★

    1.activity启动方式 Android启动Activity有两种方式:显式调用和隐式调用.显式调用需要明确地指定被启动对象的组件信息,包括包名和类名:隐式调用则不需要明确指定组件信息.原则上一个 ...

  7. 基于隐马尔科夫模型文本相似度问题研究

    文本相似度是表示两个或者多个文本之间匹配程度的一个度量参数,相似度数值大,说明文本相似度高:反之文件相似程度就低.文本相似度的精确计算问题是进行信息处理的关键. 在如今信息技术飞速发展的互联网时代,文 ...

  8. 基于隐式神经网络表达的数据压缩

    数据压缩是一种在日常生活中广泛应用的技术,从算法角度来讲,压缩的过程是通过改变数据的表征范式以达到保留信息.去除冗余的过程.近来,深度学习在数据压缩领域的应用不仅表现出极好的性能,还为数据表征提出了具 ...

  9. 基于paddlehub的图像风格转换

    基于paddlehub的图像风格转换 产生背景 模型概述 安装模型版本 代码实现 效果展示 作为宝可梦迷,先展示一波最爱的皮卡丘 玩图片嘛,少不了特朗普 换个风格试试? 我们对风景图试试看效果吧~ 个 ...

  10. 基于神经网络的图像风格迁移解析与实现

    概述 最近对图像风格迁移这种技术突然非常感兴趣,大概是之前读到了一篇关于对抗生成网络生成逼真人脸的论文文献,于是对这种技术很是好奇,大致了解了一下这个领域.我大致将其分为三个研究领域: 基于传统的机器 ...

最新文章

  1. java 饼图 框架_Java 在 Excel 中创建饼图/环形图
  2. Playmaker Input篇教程之引入的核心概念
  3. PTA L1_002 打印沙漏(C语言)
  4. 模拟电路技术之基础知识(四)
  5. 云栖大会|感受万物数字化,体验千行视频化
  6. 用UDEV服务解决RAC ASM存储设备名
  7. Express中post请求req.body为空
  8. Codeforces.449D.Jzzhu and Numbers(容斥 高维前缀和)
  9. 一日三项令人兴奋的Lucene功能
  10. Kali渗透测试——WOL-E
  11. idea 断点调试 以及 tomcat 无法访问
  12. HDU 4234 Moving Points
  13. 谁的盛世————读《饥饿的盛世》有感
  14. 535. TinyURL 的加密与解密 : 设计一个 URL 简化系统
  15. K8S系列:Pod 的恢复策略restartPolicy
  16. ABP学习笔记:关于生成Proxy前端代理的一些注意事项
  17. 动车组检修问题 数学建模
  18. 强调实体融合的当下,元宇宙当仁不让地成为各色玩家关注的焦点
  19. U盘中病毒,除病毒,要除根
  20. 一个小问题——网站盈利

热门文章

  1. 最长递增子序列和双序列
  2. MATLAB中if (0)
  3. Farrago for Mac(强大的现场多音频播放工具)
  4. Mac小知识--软件的三种安装/卸载方法,优缺点分析
  5. Java基础之时间的友好显示
  6. 灵活就业协议影响应届身份吗,档案应该如何处理
  7. ****** 三十 ******、软设笔记【计算机体系结构】-循环冗余校验码(CRC)
  8. Spring的IoC容器实现原理(一)#loadBeanDefinition
  9. PoJ3278--Catch That Cow(Bfs)
  10. Exchange企业实战技巧(17)让密件抄送给特定用户