Java中2个2D字符数组的比较

Java中2个2D字符数组的比较,java,arrays,hashmap,Java,Arrays,Hashmap,我有两个2D字符数组,一个“大”和一个“小”,我想找出较小的字符数组在较大的字符数组中的位置 例如: 较大的是 jfbsvdfaakjdfb dsvkfvwaaksghd aadkfghsgkdldl aakdfghfgbkjbb fdkbaadfkgaskj 较小的是 aa aa 它将位于[0,7]和[2,0] 我想知道比较这两者最简单的方法是什么?现在,我考虑的是for循环,它首先比较数组中的第一个元素,如果它们不匹配,则直到有匹配为止,然后一旦有匹配,则更多的for循环比较每个元素以查

我有两个2D字符数组,一个“大”和一个“小”,我想找出较小的字符数组在较大的字符数组中的位置

例如:

较大的是

jfbsvdfaakjdfb
dsvkfvwaaksghd
aadkfghsgkdldl
aakdfghfgbkjbb
fdkbaadfkgaskj
较小的是

aa
aa
它将位于[0,7]和[2,0]

我想知道比较这两者最简单的方法是什么?现在,我考虑的是for循环,它首先比较数组中的第一个元素,如果它们不匹配,则直到有匹配为止,然后一旦有匹配,则更多的for循环比较每个元素以查看它们是否匹配。另一个选项是设置HashMaps,但我不确定如何设置或使用它们来获得结果

在修改其中一个建议后,我提出了以下代码: 公共静态int[]findWaldo(char[]]大,char[]]小){

publicstaticvoidmain(字符串[]args){
字符i[][]=新字符[][]{
{'d','s','l','e','i','g','h','e','i','j','a','s','l','d','k','j'},
{'a','b','c','d','e','f','g','W','W','Z','Z','Z','W','1','l','k'},
{'h','i','j','k','l','m','n','Z','A','A','Z','2','i','n'},
{'o','p','q','r','s','t','u','Z','Z','L','L','Z','Z','3','i','v'},
{'v','w','x','y','z','1','2','z','d','z','d','d','z','4','q','i'},
{'3','4','5','6','7','8','9','o','Z','Z','o','o','Z','5','b','v'},
{'k','e','8','7','8','4','j','f','l','k','a','v','8','8','h','j'}
};
字符w[][]=新字符[][]{
{'W','W','W','W','W','1'},
{'.','A','A','A','A','A','2'},
{.'.','.',L',L','.','.','.','3'},
{'.','d'.','d','d','d','4'.},
{'o','o','o','o','o','5'}
};
发现(i,w);
}
公共静态int[]find(char[]image,char[]waldo){
for(int i=0;i

这段代码只打印较大数组的第一部分,这有什么原因吗?(请忽略小数组中的.,因为它们将表示任何字符,因此本质上是匹配的。

一个简单的实现只需将它们转换为字符串即可。字符串是表示字符数组的一个极好的对象!它们还有一个额外的好处,就是内置了执行此类操作的优秀方法

char[] largerCharArray= {'j','f','b'/*and so on...*/};
String largerString = new String(largerCharArray);
// or largerString = "jfbsvdfaakjdfb";

char [] smallCharArray = {'a', 'a'};
String smallString = new String(smallCharArray);
// or smallString = "aa";

System.out.println(largerString.indexOf(smallString));

与找出最简单的方法相反,也许你应该尝试一下,然后询问是否可以做出任何改进。实现你的想法,并解决你面临的问题。对于[0对于2D数组,可以实现相同的概念吗?我尝试将其赋值,但不断出现错误。@user2449907当然可以,字符串只是一个字符数组。因此,对于2D数组,可以使用字符串[]。
char[] largerCharArray= {'j','f','b'/*and so on...*/};
String largerString = new String(largerCharArray);
// or largerString = "jfbsvdfaakjdfb";

char [] smallCharArray = {'a', 'a'};
String smallString = new String(smallCharArray);
// or smallString = "aa";

System.out.println(largerString.indexOf(smallString));