Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在两个数组中找出相互的元素_Java_Intersection_Set Intersection - Fatal编程技术网

Java在两个数组中找出相互的元素

Java在两个数组中找出相互的元素,java,intersection,set-intersection,Java,Intersection,Set Intersection,我正在寻找一种有效的方法来做到这一点。假设我有两个带有对象点的数组 Point[] a1 = {/*something that is Point*/} Point[] a2 = {/*something that is Point*/} 我想要的是在不使用java.util的情况下在两个数组中获得相互的东西* 比如说 Point[] a1 = {Point1, Point2, Point3} Point[] a2 = {Point2, Point3} 我想得到一个新的阵列a3 a3 = {

我正在寻找一种有效的方法来做到这一点。假设我有两个带有对象点的数组

Point[] a1 = {/*something that is Point*/}
Point[] a2 = {/*something that is Point*/}
我想要的是在不使用java.util的情况下在两个数组中获得相互的东西*

比如说

Point[] a1 = {Point1, Point2, Point3}
Point[] a2 = {Point2, Point3}
我想得到一个新的阵列a3

a3 = {Point2, Point3} 
让我困惑的是,我不知道a3会持续多久。 所以我必须循环a1和a2来计算有多少共同的项目, 及


然后再次循环a1、a2并将项目放入??这看起来效率很低。有没有更优雅的方法可以做到这一点,因为这可能会一直出现。

因为数组不能重新调整大小,所以您可以制作一个大小等于其他两个数组中最小数组大小的数组

为该数组保留索引,并在循环遍历两个数组时添加公共元素

完成后,创建一个大小等于已达到的索引的新数组,并将其复制到上面


但是,老实说,使用
java.util.*
或其他一些库,如
Guava

您想进行交叉吗?(这是一个关键字,使用它进行搜索)是的,不使用java.util.*是否有任何特定原因使您不能使用
java.util.*
?这看起来更有趣搜索List.retainAllOK。。这省了一个loop@TimothyLeung实现您自己的
链表
:)以动态调整大小。@timothyleng如果您仍然需要返回数组,则不需要返回,因为您仍然需要迭代所有元素并将它们复制到数组中。你可以节省一些内存。
Point[] a3 = new Point[count]