gpt4 book ai didi

java - 找出数组类型来比较java中的数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:36:02 25 4
gpt4 key购买 nike

我正在尝试编写一种方法来比较 Java 中的两个数组而不使用 .equals()。

比较完数组的大小/长度后,我想对它们进行排序(假设它们的大小相同),但我不知道每个数组中存储的是什么数据类型。我怎样才能解决这个问题以执行 .sort()?

我突然想到我可以执行 deepToString() 而不必担心实际类型,因为我只是在此处比较数组。

if(array1.length = array2.length)
{
//figure out array type to perform sorts???
array1.sort(TYPE[]);
array2.sort(TYPE[]);
for(int i = 0; i < array1.size(); i++)
{
if(array1[i] != array2[i])
{
return false;
}
if(i = array1.size() - 1)
{
return true;
}
}
}

最佳答案

I don't know what data type is being stored in each array.

这是个难题:

  • 你可以得到数组第一个元素的类型并查看它的类型;例如

    类类型=数组[0].getClass();

    但不能保证数组的所有元素都具有相同的(最派生的)类型。

  • 你可以得到数组的基类型;例如

    类类型 = array.getClass().getComponentType();

    但元素的实际类型可以是该类型的任何子类型。

How can I figure this out to perform a .sort()?

即使您设法获得了元素的实际类型(并且它们都具有相同的类型),您仍然会遇到困难。只知道该类型(通常)不会让您对它们进行排序。要对数组进行排序,您需要以下之一:

  • 元素类型必须实现Comparable接口(interface)。

  • 您必须提供一个单独的Comparator 对象。

我认为最好的办法是忘记类型并执行以下操作之一:

  • 只需调用 Arrays.sort(Object[]) .如果数组元素都实现了 Comparable 并且元素是相互可比较的,那么这将起作用。

  • 实现并使用比较器类。从理论上讲,这可能是一个“通用”比较器,可以对您可能在数组中遇到的任何一对对象进行排序。但更好的想法是实现多个比较器并将适当的比较器作为参数或其他东西传递给您的相等方法。

关于java - 找出数组类型来比较java中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7748287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com