前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >找出两个文件中相同的单词(java实现)

找出两个文件中相同的单词(java实现)

作者头像
崔笑颜
发布2020-08-24 11:50:14
1.7K0
发布2020-08-24 11:50:14
举报
代码语言:javascript
复制
package com.zy.DesignPrinciples.singleresponsibility;


import javax.print.DocFlavor;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.HashSet;

/**
 * @ClassName: ReaderComplete
 * @Author: Tiger
 * @Title: 找出两个文件中相同的单词
 * @Datetime: 2020/8/19   19:49
 * @Package: com.zy.DesignPrinciples.singleresponsibility
 */
public class ReaderComplete {
    public static void main(String[] args) throws Exception {
        String s = loadFile("F:\\.temp\\1.txt");
        String s1 = loadFile("F:\\.temp\\2.txt");
        String[] words1 = parseWordsFromString(s);
        String[] words2 = parseWordsFromString(s1);
        String[] words = findTheSameWords(words1, words2);
        for (String word : words) {
            System.out.println(word);
        }
    }

    //加载文件内容,并将文本内容解析返回出去
    public static String loadFile(String path) throws Exception {
        FileReader reader = new FileReader(path);
        //bufferedReader 一次只能读一行内容
        BufferedReader br = new BufferedReader(reader);
        String line = null;
        StringBuilder sb = new StringBuilder();
        while ((line = br.readLine()) != null) {

            sb.append(line);
            sb.append("\n");
        }
        br.close();
        return sb.toString();
    }
    //将解析的内容变成数组
    public static String[] parseWordsFromString(String string) {
        String[] strings = string.split("[^a-zA-Z]+");
        return strings;

    }
    //查询两文件的相同代码
    public static String[] findTheSameWords(String[] s1,String[] s2){
        HashSet<String> set = new HashSet<>();
        for (int i = 0; i < s1.length; i++) {
            for (int j = 0; j < s2.length; j++) {
                if (s1[i].equals(s2[j])){
                    set.add(s1[i]);
                }
            }
        }
        return  set.toArray(new String[] {});
    }
}

第二种比较单词的方法:将string【】数组转换成集合,通过集合的retainAll()方法 两个集合取交集

代码语言:javascript
复制
public static String[] findTheSameWords2(String[] s1,String[] s2){

        //将字符串数组转换成集合
        List<String> list = new ArrayList(Arrays.asList(s1));
        List<String> list2 = new ArrayList(Arrays.asList(s2));
        //计算交集 并且把计算结果存入到list中而且list2并不会改变
        list.retainAll(list2);
        HashSet<String> set = new HashSet<>(list);
        return set.toArray(new String[] {});
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档