Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_String_List - Fatal编程技术网

如何在Java中比较两个列表

如何在Java中比较两个列表,java,arrays,string,list,Java,Arrays,String,List,我试图比较两个列表。两个列表都有成千上万的条目 到目前为止,我的想法是使用2个ArrayList并逐元素比较它们。然而,有人告诉我,过多的比较会破坏eclipse。不知道这是不是真的。虽然安全总比后悔好 如果你知道任何关于比较成千上万个字符串的技巧,请告诉我。谢谢。什么是“腐败的日食” 但是,如果您有两个arraylist,并且您想知道它们是否相等,则必须比较所有变量,除非您找到差异或列表末尾。复杂度是O(n)-线性-这是不经过预处理就可以得到的最好结果(在最佳情况下,它本身就是O(n)。您必须

我试图比较两个列表。两个列表都有成千上万的条目

到目前为止,我的想法是使用2个ArrayList并逐元素比较它们。然而,有人告诉我,过多的比较会破坏eclipse。不知道这是不是真的。虽然安全总比后悔好

如果你知道任何关于比较成千上万个字符串的技巧,请告诉我。谢谢。

什么是“腐败的日食”


但是,如果您有两个arraylist,并且您想知道它们是否相等,则必须比较所有变量,除非您找到差异或列表末尾。复杂度是
O(n)
-线性-这是不经过预处理就可以得到的最好结果(在最佳情况下,它本身就是
O(n)

您必须比较两个数组中的每个单独元素尝试对数组进行排序,然后使用for循环运行它如果您比较两个数字,预期的输出可以是- ->第一个大于第二个 ->第一个不到第二个 ->第一等于第二

但是,比较两个列表是什么意思?您是否计划比较两个列表的长度?如果是这样,您将得到两个列表的大小并进行比较

若您想将列表中的每个元素和其他元素进行比较,这意味着您正在尝试对列表进行排序。如果您计划对两个列表执行相同的操作,这可能意味着-您正在尝试对两个列表进行合并排序。也就是说,您正在创建一个列表,该列表按排序顺序包含两个列表的所有元素

下面的视频可以帮助您理解合并排序。

此代码的平均时间复杂度为O(n logn)。对于包含数万个元素的列表,该算法将具有相当大的时间复杂度,但eclipse不会损坏。最糟糕的情况是,如果代码编写不正确,内存泄漏可能会导致JVM出现问题


我希望我的回答能帮助你。如果您的问题更清楚、更具体,我可能会更好地帮助您。

您是否尝试过您正在考虑的实现?这种比较的结果如何?你能给我们举个例子吗?您可以分享您的编码尝试并显示它不起作用的地方吗?Eclipse只是您的IDE,它不会因为您运行应用程序而损坏。@PhillipMartin还没有。如上所述,我确实有一些担心。此外,您可能需要考虑使用集合,而不是列表。如果列表中的所有元素都是唯一的(或者应该是唯一的),因为它们只出现一次,那么一个集合可能更有用。它不允许您将一个条目放入两次,您可以调用.equals()来比较两个集合。如果使用公共哈希集,条目将不会保持其插入顺序,但这通常不是您在使用集合时想要或需要的。我在考虑内存泄漏。用O(n)你说的是大O符号?这描述了函数的极限点。我的问题是如何把O(n)转换成代码。也许通过请求下一个最伟大的阵列?数组[next Array amount…]高级感谢:)不涉及内存泄漏,但我不相信您完全理解内存泄漏是什么,也许可以查一下?我的字典已经出来了。这就指向了我不懂的那个词。谢谢:)@SebastiaanvandenBroek我的定义完全没有抓住要点。谢谢。我说的是在列表中查找所有重复项。我有一个任务要找到他的副本,只有在一个数以万计的电子邮件列表中的副本。谢谢:)在Java中使用Set。集合没有重复项。Set yourSet=newhashset();这可以构建一个集合,如果列表的大小与列表的大小不同,则表示列表中有重复项。如果没有空间复杂度问题,请使用hashmap。您还可以知道哪些元素是重复的。