gpt4 book ai didi

Java数据结构只对相同的项目索引一次

转载 作者:行者123 更新时间:2023-12-02 13:25:56 28 4
gpt4 key购买 nike

以下 Java 代码:

public static void main(String args[]) {

int[] x = new int[] {1, 2, 3};
int[] y = new int[] {1, 2, 3};

LinkedList<int[]> list = new LinkedList<int[]>();

list.add(x);

System.out.println("List contains y: " + list.contains(y));

}

给出输出

    List contains y: false

这是有道理的,因为xy是对不同内存位置的引用,但是它们也有相等的意义(它们在相同的顺序)。

在此示例中,是否有一个数据结构可以向查询 list.contains(y) 返回 true

最佳答案

我不相信有一个 Java 数据结构会返回 true对于 contains()正如您所描述的。

正如您可能知道的那样,问题是对于 Java 数组, equals()仅测试对象身份,而不测试大多数人定义的“相等”。

contains()依赖equals()在这种情况下(大多数情况下),您会陷入给定的行为。

您必须实现 List专门覆盖 contains()为 Java 数组提供所需的行为,可能使用 Arrays.equals() .

我的建议是改用 List而不是数组;然后你就会有一个 List<List<Integer>>contains()应该在这种情况下工作,因为它将使用 equals()在底层List实现。

关于Java数据结构只对相同的项目索引一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6146101/

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