我在这里找到了一个很好的代码,可以帮助我完成一件事。 但我需要的是: 我有两个列表,一个列表是example1.txt,而sencond列表是example2.txt我需要得到相似和不同。我不知道在哪里设置c://example1.txt和c://example2.txt
例如:Arrays.asList(c://example1.txt);
import java.util.Collection;
import java.util.HashSet;
import java.util.Arrays;
class Repeated {
public static void main( String [] args ) {
Collection<String> listOne = Arrays.asList("1","2","3");
Collection<String> listTwo = Arrays.asList("1","2","2");
Collection<String> similar = new HashSet<String>( listOne );
Collection<String> different = new HashSet<String>();
different.addAll( listOne );
different.addAll( listTwo );
similar.retainAll( listTwo );
different.removeAll( similar );
System.out.printf("One:%s%nTwo:%s%nSimilar:%s%nDifferent:%s%n", listOne, listTwo, similar, different);
}
}
答案 0 :(得分:4)
据我了解,您不知道如何将文本文件读取到列表中。有很多选择:
IOUtils.readLines(new FileInputStream("c:/example.txt"))
new BufferedInputStream(new FileInputStream(..))
然后使用readLine()
方法要正确处理编码,您需要使用new InputStreamReader(inputStream, "utf-8")
<强>更新强>
您的文件似乎只包含一行。使用彼得提醒我的FileUtils
:
String str = FileUtils.readFileToString("c:/filename.txt");
String[] numbers = str.split(",");
List<String> list = Arrays.asList(numbers);
答案 1 :(得分:2)
听起来像家庭作业,但我会咬人。我会使用FileUtils
Set<String> example1 = new LinkedHashSet<String>(
FileUtils.readLines(new File(args[0])));
Set<String> example2 = new LinkedHashSet<String>(
FileUtils.readLines(new File(args[1])));
Set<String> same = new LinkedHashSet<String>(example1);
same.retainAll(example2);
Set<String> different = new LinkedHashSet<String>(example1);
different.removeAll(example2);
如果您在值之间有一个,
,则可以使用
Set<String> example1 = new LinkedHashSet<String>(
Arrays.asList(FileUtils.readFileToString(new File(args[0])).split("[,\\s]")));