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

