130242014073+张顺程+第3次实验

Posted 张顺程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了130242014073+张顺程+第3次实验相关的知识,希望对你有一定的参考价值。

一、实验目的

1.理解不同体系结构风格的具体内涵。

2.学习体系结构风格的具体实践。

二、实验环境

硬件: (依据具体情况填写)

软件:Java或任何一种自己熟悉的语言

三、实验内容

 

“上下文关键字”KWIC(Key Word in Context,文本中的关键字)检索系统接受有序的行集合:每一行是单词的有序集合;每一个单词又是字母的有序集合。通过重复地删除航中第一个单词,并把它插入行尾,每一行可以被“循环地移动”。KWIC检索系统以字母表的顺序输出一个所有行循环移动的列表。

尝试用不同的策略实现这个系统。选择2-3种体系结构风格来实现。

四、实验步骤:

    本例采用管道-过滤器风格实现

1、体系结构图:

 

 

2、写出主要的代码

package com.zsc.kwic;

 

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.List;

 

public class KWIC {

    public static void main(String[] args) throws IOException {

        // 文件源

        String fileName = "test.txt";

        // 获取上下文

        List<String> sourceList = KWIC.getListFormFile(fileName);

        // 循环

        List<String> kwicList = KWIC.loop(sourceList);

        // 按字母表排序

        KWIC.sortList(kwicList);

        // 输入结果

        KWIC.display(kwicList);

    }

 

    /**

     * 获取文件内容并存入list

     *

     * @author zsc

     * create 2017年11月19日/update 2017年11月19日

     * @param fileName

     * @return

     * @throws IOException

     */

    public static List<String> getListFormFile(String fileName) throws IOException {

        List<String> list = null;

        BufferedReader br = null;

        /* 读取数据 */

        try {

            list = new ArrayList<>();

            br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "utf-8"));

            String lineTxt = "";

            System.out.println("===============输入=================");

            // 逐行读取文件

            while ((lineTxt = br.readLine()) != null) {

                System.out.println(lineTxt);

                list.add(lineTxt);

            }

        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        } finally {

            try {

                br.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        return list;

    }

 

    /**

     * 循环移动内容并返回排序后的集合

     *

     * @author zsc

     * create 2017年11月19日/update 2017年11月19日

     * @param list

     * @return

     */

    public static List<String> loop(List<String> list) {

        List<String> kwicList = new ArrayList<String>();

        for (int i = 0; i < list.size(); i++) {

            // 分割单词

            List<String> words = Arrays.asList(list.get(i).split("\\\\s+"));

            for (int j = 0; j < words.size(); j++) {

                // 循环移动

                Collections.rotate(words, 1);

                kwicList.add(KWIC.listToString(words));

            }

        }

        return kwicList;

    }

 

    /**

     * list集合解析为指定格式字符串

     *

     * @author zsc

     * create 2017年11月19日/update 2017年11月19日

     * @return

     */

    public static String listToString(List<String> list) {

        StringBuffer sb = new StringBuffer();

        for (String string : list) {

            sb.append(string + " ");

        }

        // 去除最后一个空格并返回

        return sb.toString().trim();

    }

 

    /**

     * 按字母表排序

     *

     * @author zsc

     * create 2017年11月19日/update 2017年11月19日

     * @param list

     */

    public static void sortList(List<String> list) {

        // 按字母表排序

        Collections.sort(list);

    }

 

    /**

     * 显示结果

     *

     * @author zsc

     * create 2017年11月19日/update 2017年11月19日

     * @param list

     */

    public static void display(List<String> list) {

        System.out.println("===============输出=================");

        for (String string : list) {

            System.out.println(string);

        }

    }

}

4、显示结果:

 

 

五、实验总结

比较简单没啥问题。

作业博客要求:

   标题:是学号+姓名+第3次实验 

以上是关于130242014073+张顺程+第3次实验的主要内容,如果未能解决你的问题,请参考以下文章

130242014070 张宇 第3次实验

数据采集第二次实验

130242014017-蔡志峰-第3次实验

130242014074 林泽民 第3次实验

130242014034-林伟领-第3次实验

130242014072 邱慧坚 第3次实验