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)文章
Mybatis 實(shí)現(xiàn)打印sql語句的代碼
這篇文章主要介紹了Mybatis 實(shí)現(xiàn)打印sql語句的代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
SpringFramework中的數(shù)據(jù)校驗(yàn)方式
這篇文章主要介紹了SpringFramework中的數(shù)據(jù)校驗(yàn)方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-12-12
Mybatis中的高級(jí)映射一對(duì)一、一對(duì)多、多對(duì)多
這篇文章主要介紹了Mybatis中的高級(jí)映射一對(duì)一、一對(duì)多、多對(duì)多的相關(guān)資料,需要的朋友可以參考下2016-08-08
Can''t use Subversion command line client:svn 報(bào)錯(cuò)處理
這篇文章主要介紹了Can't use Subversion command line client:svn 報(bào)錯(cuò)處理的相關(guān)資料,需要的朋友可以參考下2016-09-09
Java 和 JavaScript 真正通用的Base64編碼詳解
這篇文章主要介紹了Java 和 JavaScript 真正通用的Base64編碼詳解的相關(guān)資料,附有Java和Javascript 的Base64編碼,需要的朋友可以參考下2016-11-11

