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

 更新时间:2020年08月21日 10:31:42   作者:·小脑斧·  
这篇文章主要介绍了java实现找出两个文件中相同的单词(两种方法),需要的朋友可以参考下

java实现找出两个文件中相同的单词,具体代码如下所示:

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()方法
两个集合取交集

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[] {});
 }

PS:java实现获取两个文本共同的词

代码块

public class ComWords {
  /**
   * @ClassName: ComWords
   * @Description: TODO(获取两个文档的共同词)
   * @author: Amy_Robot
   * @date: 2017年3月24日 下午5:16:48
   */

  public static String getFileContent(String path)
  {
  StringBuffer sb = new StringBuffer();
  InputStreamReader isr = null;
  BufferedReader bufferedReader = null;
  String fileContent="";{
  try {
    String encoding = "utf-8";
    File file = new File(path);
    if (file.isFile() && file.exists()) { // 判断文件是否存在
      isr = new InputStreamReader(new FileInputStream(file), encoding);// 考虑到编码格式
      bufferedReader = new BufferedReader(isr);
      String lineTxt = null;
      while ((lineTxt = bufferedReader.readLine()) != null) {
        //System.out.println(lineTxt);//输出文档内容
        sb.append(lineTxt);
      }

      isr.close();
    } else {
      System.out.println("找不到指定的文件");
    }
  } catch (Exception e) {
    System.out.println("读取文件内容出错");
    e.printStackTrace();
  } finally {
    try {
      if (isr != null) {
        isr.close();
        isr = null;
      }
      if (bufferedReader != null) {
        bufferedReader.close();
        bufferedReader = null;
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  return sb.toString();}
  }

  public static void getComWords(String sourcefile1,String sourcefile2,String targetfile) throws IOException{

    BufferedWriter F2Writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(targetfile))));
    List<String> list1= new ArrayList<String>();
    List<String> list2= new ArrayList<String>();
    List<String> list3= new ArrayList<String>();
    String a[] =getFileContent(sourcefile1).split("\\s");
    for (int j = 0; j < a.length; j++) {
      list1.add(a[j]);
    }
    String b[] = getFileContent(sourcefile2).split("\\s");
    for (int j = 0; j < b.length; j++) {
      list2.add(b[j]);
    }

    for (String str2 : list2) {

      if(list1.contains(str2)){  
        list3.add(str2);
        F2Writer.write(str2+"\r\n");

      }  

      }
    for (String str : list3) {
      System.out.println(str);

    }
     F2Writer.close();
    }  


  public static void main(String[] args) throws IOException {
    String target="e:\\1.txt";
    String path1="D:\\qirui_naf.txt";
    String path2="D:\\jianghuai_naf.txt";
    getComWords(path1, path2, target);

  }
}

总结

到此这篇关于java实现找出两个文件中相同的单词(两种方法)的文章就介绍到这了,更多相关java找出两个文件相同单词内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Java的度分秒坐标转纯经纬度坐标的漂亮国基地信息管理的方法

    基于Java的度分秒坐标转纯经纬度坐标的漂亮国基地信息管理的方法

    本文以java语言为例,详细介绍如何管理漂亮国的基地信息,为下一步全球的空间可视化打下坚实的基础,首先介绍如何对数据进行去重处理,然后介绍在java当中如何进行度分秒位置的转换,最后结合实现原型进行详细的说明,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • Java图形用户界面设计(Swing)的介绍

    Java图形用户界面设计(Swing)的介绍

    看到多数人提到 Java 就以为是网络开发,其实不是这样的,Java 也可以开发应用程序,而且可以开发出漂亮的图形用户界面的应用程序,因此,我写下这篇文章,希望能带你进入 Java 图形用户界面设计之门。
    2016-07-07
  • Java实现threadLocal线程池获取

    Java实现threadLocal线程池获取

    本文主要介绍了Java实现threadLocal线程池获取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • JAVA后台转换成树结构数据返回给前端的实现方法

    JAVA后台转换成树结构数据返回给前端的实现方法

    这篇文章主要介绍了JAVA后台转换成树结构数据返回给前端的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 浅谈Java的SPI技术

    浅谈Java的SPI技术

    这篇文章主要介绍了Java的SPI技术的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 手把手教你使用IDEA创建多模块(maven)项目

    手把手教你使用IDEA创建多模块(maven)项目

    这篇文章主要给大家介绍了关于如何使用IDEA创建多模块(maven)项目的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • java制作专属智能陪聊机器人详解

    java制作专属智能陪聊机器人详解

    人工智能一直是最近的热点话题,,这篇文章主要为大家详细介绍了java实现智能陪聊机器人,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • SpringBoot整合RabbitMQ实现交换机与队列的绑定

    SpringBoot整合RabbitMQ实现交换机与队列的绑定

    这篇文章将通过几个实例为大家介绍一些SpringBoot中RabbitMQ如何绑定交换机(交换器)与队列,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-05-05
  • 关于解决雪花算法生成的ID传输前端后精度丢失问题

    关于解决雪花算法生成的ID传输前端后精度丢失问题

    这篇文章主要介绍了关于解决雪花算法生成的ID传输前端后精度丢失问题,雪花算法生成的ID传输到前端时,会出现后三位精度丢失,本文提供了解决思路,需要的朋友可以参考下
    2023-03-03
  • spring kafka框架中@KafkaListener 注解解读和使用案例

    spring kafka框架中@KafkaListener 注解解读和使用案例

    Kafka 目前主要作为一个分布式的发布订阅式的消息系统使用,也是目前最流行的消息队列系统之一,这篇文章主要介绍了kafka @KafkaListener 注解解读,需要的朋友可以参考下
    2023-02-02

最新评论