Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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 - Fatal编程技术网

Java:检查两个映射列表是否具有相同的元素

Java:检查两个映射列表是否具有相同的元素,java,Java,我有两个类似的列表(地图列表): 我想验证两个列表是否相同。 但是当“分数”小于1时,我应该将其视为相同。例如,99.1和98.9应被视为相同的分数 有两个列表是无序的 如何在O(n)中实现这一点?取决于用于分数的变量类型,但本质上是相同的。如果使用float,则应使用%.0f;如果使用double,则应使用%.0d。我希望情况是这样的,这会有所帮助 我如何在O(n)中实现这一点 数学上不可能 一些注意事项: 拥有地图不是惯用的java语言。使用此信息创建一个类,例如名为Person 作为一般

我有两个类似的列表(地图列表):

我想验证两个列表是否相同。 但是当“分数”小于1时,我应该将其视为相同。例如,99.1和98.9应被视为相同的分数

有两个列表是无序的


如何在O(n)中实现这一点?

取决于用于分数的变量类型,但本质上是相同的。如果使用float,则应使用%.0f;如果使用double,则应使用%.0d。我希望情况是这样的,这会有所帮助

我如何在O(n)中实现这一点

数学上不可能

一些注意事项:

  • 拥有地图不是惯用的java语言。使用此信息创建一个类,例如名为
    Person
  • 作为一般原则,最快的时间是O(nlogn):对两个列表进行排序(2xo(nlogn)),然后同时检查两个列表,这可以严格递增,并比较:2xo(n)。2O(nlogn)+2O(n),归结为O(nlogn)。但是,由于使用的是
    地图而不是
    人,因此对这些数据进行排序比需要的复杂得多
另一种选择是将所有数据直接插入自排序结构中,例如,使用某人的姓名作为键,该结构将是一个树映射


检查任意两个给定的分数是否在彼此的一个点内是很简单的:
if(Math.abs(scoreA-scoreB)<1)
就可以了。

一个非常基本的方法是循环通过其中一个地图(entryset),并检查地图2上的@Gurkanİlleez键是否包含两个“分数”,hashcode无法判断绝对差值小于1@Kenneth克拉克困难在于如何分辨列表1中的哪个地图对应于列表2中的哪个地图?我可以用蛮力,但我认为这不是最好的;它将是O(n*n)
list1 : [("name","Tom"),("age","35"),("score",99.1)], [("name","Mary"),("age","20"),("score",62.2)]
list1 : [("name","Mary"),("age","20"),("score",62.6)], [("name","Tom"),("age","35"),("score",98.9)]