2012-11-15 28 views
0

可能重复:
Check whether an array is a subset of another如何检查数组a是否是java中数组b的一部分?

我有数组a = { 1,4,3,5,1,2,3,6 }和阵列b= { 1,2,3 }

如何检查数组b是否出现在阵列中的任何位置a?任何帮助将不胜感激。谢谢。

+3

这是在'噢,琐碎(N^2)'。 'O(n log n)'也相对容易。你有什么尝试? –

+1

仅供参考,回答在这里: http://stackoverflow.com/questions/1128723/in-java-how-can-i-test-if-an-array-contains-a-certain-value –

+0

应元素放置在一起或b的每个元素都可以在任何地方找到。 –

回答

2

使用Apache Commons Lang

for (Object element:b) { 
    if (ArrayUtils.contains(a,element) == false) return false; 
} 
return true; 
5

最简单的方法显然是使用内置函数。但是,Java仅具有内置函数来为Collection类型执行此操作。如果数组是原始类型的不是,你可以这样做:

if (Arrays.asList(a).containsAll(Arrays.asList(b))) { 
    //... 
} 

如果它是一个基本数组(int[]等),这仍然是最简单的方法,你只需要在阵列手动转换到一个列表或使用第三方库。 Guava has functions此:

if (Ints.asList(a).containsAll(Ints.asList(b))) { 
    //... 
} 
+0

谢谢,我将数组转换为列表,但仍然无法识别Ints.asList,这是代码。 \t \t //将我们的数组转换为列表 \t \t List alist =(List)Arrays.asList(a); \t \t List blist =(List)Arrays.asList(b); \t \t \t 如果\t(Ints.asList(blist).containsAll(Ints.asList的(a))){ \t \t \t是System.out.print( “是”); \t \t} else \t \t System.out.print(“no”); – user1172575

+0

@ user1172575在你说的评论中,“b”的元素应该在一起,但即使它们不是,它也会返回true。 – madth3

+0

@ madth3,如果它们不是b中的,它应该返回false,为什么它会返回true,即使它们不是? – user1172575

相关问题