Java 从两个数组中查找公共文件
我试图从两个数组中查找通用名称文件。 我已将两个不同文件夹的文件名保存在两个不同的数组中 现在我正在创建一个公共文件数组,该数组将包含具有公共名称的文件 文件名1:包含文件夹1中文件名的数组 文件名2:包含文件夹2中文件名的数组Java 从两个数组中查找公共文件,java,arrays,Java,Arrays,我试图从两个数组中查找通用名称文件。 我已将两个不同文件夹的文件名保存在两个不同的数组中 现在我正在创建一个公共文件数组,该数组将包含具有公共名称的文件 文件名1:包含文件夹1中文件名的数组 文件名2:包含文件夹2中文件名的数组 import java.io.File; import java.util.*; public class ListFiles1 { public static void main(String[] args) { String
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<String> fileNames1 = new ArrayList<>();
ArrayList<String> 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<String> 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);
}
}
}
}
}
导入java.io.File;
导入java.util.*;
公共类列表文件1
{
公共静态void main(字符串[]args)
{
字符串路径1=“C:\\”;
字符串路径2=“D:\\”;
File folder1=新文件(路径1);
File folder2=新文件(路径2);
字符串[]f1=folder1.list();
文件[]listOfFiles1=folder1.listFiles();
文件[]listOfFiles2=folder2.listFiles();
ArrayList fileNames1=新的ArrayList();
ArrayList fileNames2=新的ArrayList();
for(int i=0;i
我编写了此代码,但编译器给出了以下错误:
Main.java:52: error: array required, but ArrayList<String> found
tempfilename1=fileNames1[i];
^
Main.java:53: error: array required, but ArrayList<String> found
tempfilename2 = fileNames2[j];
^
Main.java:52:错误:需要数组,但找到了ArrayList
tempfilename1=filename1[i];
^
java:53:错误:需要数组,但找到了ArrayList
tempfilename2=filename2[j];
^
我是个新手
如果
filenames1
是一个array
,则不能使用ArrayList
方法get(int i)
您需要使用arrayName[elementIndex]
访问array
元素
就你而言:
tempfilename1=filenames1[i];
tempfilename2=fileNames2[j];
可以执行以下操作以获取两个数组之间的公共字符串集:
String[] listOfFiles1 = {"file1", "file2", "file3"};
String[] listOfFiles2 = {"file2", "file3", "file5"};
HashSet<String> common = new HashSet<String>(Arrays.asList(listOfFiles1));
common.retainAll(new HashSet<String>(Arrays.asList(listOfFiles2)));
System.out.println(common); // -> output: file2, file3
String[]listOfFiles1={“file1”、“file2”、“file3”};
字符串[]listOfFiles2={“file2”、“file3”、“file5”};
HashSet common=新的HashSet(Arrays.asList(listOfFiles1));
common.retainal(新的HashSet(Arrays.asList(listOfFiles2));
System.out.println(公共);//->输出:文件2,文件3
虽然不需要将它们转换为集合,但这将消除重复密钥的风险。如果您确实希望显示重复项,可以将其简化一点:
List<String> common = new ArrayList<String>(Arrays.asList(listOfFiles1));
list1.retainAll(Arrays.asList(listOfFiles2));
List common=newarraylist(Arrays.asList(listOfFiles1));
list1.retainal(Arrays.asList(listOfFiles2));
您的问题是什么?检查您的变量。我想你是以字符串数组的形式输入的,并试图将其用作数组列表。虽然不相关,但我还是忍不住:一个建议,获取字符串tempfilename1;tempfilename1=filename1.get(i);退出内部循环,节省一些cpu。