从两个arrays中查找公共文件

我试图从两个数组中找到常用的名称文件。 我已经在两个不同的数组中保存了两个不同文件夹的文件名。

现在我正在创建一个公共文件数组,其中包含具有通用名称的文件。

文件名1:包含文件夹1中文件名的数组。

filename 2:包含文件夹2中文件名的数组。

import java.io.File; import java.util.*; public class ListFiles1 { public static void main(String[] args) { String path1 = "C:\\"; String path2 = "D:\\"; File folder1 = new File(path1); File folder2 = new File(path2); String[] f1=folder1.list(); File[] listOfFiles1 = folder1.listFiles(); File[] listOfFiles2 = folder2.listFiles(); ArrayList fileNames1 = new ArrayList(); ArrayList fileNames2 = new ArrayList(); for (int i = 0; i < listOfFiles1.length; i++) { if (listOfFiles1[i].isFile()) { fileNames1.add(listOfFiles1[i].getName()); System.out.println(f1[i] + " is a file"); } } for (int j = 0; j < listOfFiles2.length; j++) { if (listOfFiles2[j].isFile()) { fileNames2.add(listOfFiles2[j].getName()); } } ArrayList commonfiles = new ArrayList(); for (int i = 0; i < listOfFiles1.length; i++) { for (int j = 0; i < listOfFiles2.length; j++) { String tempfilename1; String tempfilename2; tempfilename1=fileNames1[i]; tempfilename2 = fileNames2[j]; if(tempfilename1.equals(tempfilename2)) { commonfiles.add(tempfilename1); } } } } } 

我写了这段代码,但编译器给出了这个错误:

  Main.java:52: error: array required, but ArrayList found tempfilename1=fileNames1[i]; ^ Main.java:53: error: array required, but ArrayList found tempfilename2 = fileNames2[j]; ^ 

PS:我是新手……

如果filenames1是一个array ,则不能使用ArrayList方法get(int i)

您需要使用arrayName[elementIndex]访问array元素。

在你的情况下:

 tempfilename1=filenames1[i]; tempfilename2=fileNames2[j]; 

您可以执行以下操作以获取两个arrays之间的公共字符串集:

  String[] listOfFiles1 = {"file1", "file2", "file3"}; String[] listOfFiles2 = {"file2", "file3", "file5"}; HashSet common = new HashSet(Arrays.asList(listOfFiles1)); common.retainAll(new HashSet(Arrays.asList(listOfFiles2))); System.out.println(common); // -> output: file2, file3 

您不需要将它们转换为集合,但这将消除重复键的风险。 如果你想显示重复项,你可以简化一下:

  List common = new ArrayList(Arrays.asList(listOfFiles1)); list1.retainAll(Arrays.asList(listOfFiles2));