java - 比较两个文本文件并在java中显示唯一的单词
问题描述
我有两个文本文件。我必须开发一个 java 程序来比较这两个文件并找到唯一的单词。我尝试了几种方法,但没有奏效。例子:
测试1.txt:
I am a robot. My name is Sofia.
测试2.txt:
Hello I am a man. My name is Alex
输出:
Hello robot man Sofia Alex
我的做法是这样的:
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args)
throws FileNotFoundException {
Scanner input = new Scanner(new File("test1.txt"));
Scanner scan = new Scanner(new File("test2.txt"));
ArrayList<String> al = new ArrayList<String>();
ArrayList<String> a2 = new ArrayList<String>();
String test;
while (input.hasNext()) {
String next = input.next();
}
System.out.println("arraylist" + al);
while (scan.hasNext()) {
test = scan.next();
a2.add(test);
}
System.out.println("arraylist2" + a2);
for( int i = 0; i < al.size(); i++){
for(int j = 0; j < a2.size(); j++){
if(al.get(i).equals(a2.get(j))){
break;}
else{
System.out.println(al.get(i));break;
}
}
}
}
}
解决方案
请注意,这是一种快速而肮脏的方法,而且效率很低。此外,我不知道您的确切要求(句号?大写/小写?)。
还要考虑到这个程序不会检查哪个列表更长。但这应该给你一个很好的提示:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
Scanner input = new Scanner(new File("test1.txt"));
Scanner scan = new Scanner(new File("test2.txt"));
ArrayList<String> list1 = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
while (input.hasNext()) {
list1.add(input.next());
}
while (scan.hasNext()) {
list2.add(scan.next());
}
// iterate over list 1
for (int i = list1.size() - 1; i >= 0; i--) {
// if there is a occurence of two identical strings
if (list2.contains(list1.get(i))) {
// remove the String from list 2
list2.remove(list2.indexOf(list1.get(i)));
// remove the String from list 1
list1.remove(i);
}
}
// merge the lists
list1.addAll(list2);
// remove full stops
for (int i = 0; i < list1.size(); i++) {
list1.set(i, list1.get(i).replace(".", ""));
}
System.out.println("Unique Values: " + list1);
}
}
推荐阅读
- c# - .Net Core - Razor View 中的文化
- java - wsdl的UDDI注册
- iis - 如何将 IIS 路由到嵌套的默认文档
- python - lmfit 模型中拟合参数的不同约束
- javascript - 基于php Select动态改变JS脚本src属性
- r - sparklyr 方法不起作用 - 无法为签名 '"tbl_spark"' 的函数 'count' 找到继承的方法
- python - TypeError:预期的二进制或 unicode 字符串,得到 0.0
- html - 我的标题我没有覆盖
- android - 在android中在线保存分数
- sql - 选择具有满足某些约束的多个子关系的所有行