java實現(xiàn)找出兩個文件中相同的單詞(兩種方法)
java實現(xiàn)找出兩個文件中相同的單詞,具體代碼如下所示:
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); } } //加載文件內(nèi)容,并將文本內(nèi)容解析返回出去 public static String loadFile(String path) throws Exception { FileReader reader = new FileReader(path); //bufferedReader 一次只能讀一行內(nèi)容 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(); } //將解析的內(nèi)容變成數(shù)組 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【】數(shù)組轉(zhuǎn)換成集合,通過集合的retainAll()方法
兩個集合取交集
public static String[] findTheSameWords2(String[] s1,String[] s2){ //將字符串?dāng)?shù)組轉(zhuǎn)換成集合 List<String> list = new ArrayList(Arrays.asList(s1)); List<String> list2 = new ArrayList(Arrays.asList(s2)); //計算交集 并且把計算結(jié)果存入到list中而且list2并不會改變 list.retainAll(list2); HashSet<String> set = new HashSet<>(list); return set.toArray(new String[] {}); }
PS:java實現(xiàn)獲取兩個文本共同的詞
代碼塊
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);//輸出文檔內(nèi)容 sb.append(lineTxt); } isr.close(); } else { System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("讀取文件內(nèi)容出錯"); 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); } }
總結(jié)
到此這篇關(guān)于java實現(xiàn)找出兩個文件中相同的單詞(兩種方法)的文章就介紹到這了,更多相關(guān)java找出兩個文件相同單詞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Java的度分秒坐標轉(zhuǎn)純經(jīng)緯度坐標的漂亮國基地信息管理的方法
本文以java語言為例,詳細介紹如何管理漂亮國的基地信息,為下一步全球的空間可視化打下堅實的基礎(chǔ),首先介紹如何對數(shù)據(jù)進行去重處理,然后介紹在java當(dāng)中如何進行度分秒位置的轉(zhuǎn)換,最后結(jié)合實現(xiàn)原型進行詳細的說明,感興趣的朋友跟隨小編一起看看吧2024-06-06JAVA后臺轉(zhuǎn)換成樹結(jié)構(gòu)數(shù)據(jù)返回給前端的實現(xiàn)方法
這篇文章主要介紹了JAVA后臺轉(zhuǎn)換成樹結(jié)構(gòu)數(shù)據(jù)返回給前端的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03手把手教你使用IDEA創(chuàng)建多模塊(maven)項目
這篇文章主要給大家介紹了關(guān)于如何使用IDEA創(chuàng)建多模塊(maven)項目的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下2023-07-07SpringBoot整合RabbitMQ實現(xiàn)交換機與隊列的綁定
這篇文章將通過幾個實例為大家介紹一些SpringBoot中RabbitMQ如何綁定交換機(交換器)與隊列,文中的示例代碼講解詳細,感興趣的可以了解一下2022-05-05關(guān)于解決雪花算法生成的ID傳輸前端后精度丟失問題
這篇文章主要介紹了關(guān)于解決雪花算法生成的ID傳輸前端后精度丟失問題,雪花算法生成的ID傳輸?shù)角岸藭r,會出現(xiàn)后三位精度丟失,本文提供了解決思路,需要的朋友可以參考下2023-03-03spring kafka框架中@KafkaListener 注解解讀和使用案例
Kafka 目前主要作為一個分布式的發(fā)布訂閱式的消息系統(tǒng)使用,也是目前最流行的消息隊列系統(tǒng)之一,這篇文章主要介紹了kafka @KafkaListener 注解解讀,需要的朋友可以參考下2023-02-02