gpt4 book ai didi

java - isPalindrome - 集合和列表反转

转载 作者:行者123 更新时间:2023-12-02 03:20:10 25 4
gpt4 key购买 nike

这是学校的家庭作业实验室。我正在尝试反转 LinkedList,并检查它是否是回文(前后相同)。我在网上看到了类似的问题,但对我有帮助的并不多。我以前编写过检查回文的程序,但没有编写过检查数组或列表的程序。所以,首先,这是我的 isPalindrome 方法:

public static <E> boolean isPalindrome(Collection<E> c) {
Collection<E> tmp = c;
System.out.println(tmp);
Collections.reverse((List<E>) c);
System.out.println(c);
if(tmp == c) { return true; } else { return false; }
}

我的教授希望我们将该方法设置为接受所有集合,这就是为什么我使用 Collection 并将其转换为反向方法的列表的原因,但我不确定这是否正确完成。我知道它确实颠倒了列表。这是我的主要方法:

public static void main(String...strings) {
Integer[] arr2 = {1,3,1,1,2};
LinkedList<Integer> ll2 = new LinkedList<Integer>(Arrays.asList(arr2));
if(isPalindrome(ll2)) { System.out.println("Successful!"); }
}

问题是,我正在使用一个不是回文的数组来测试它,这意味着它向后与向前不一样。我已经使用数组 {1,3,1} 对其进行了测试,并且它工作正常,因为这是一个回文。对于回文,使用 {1,3,1,1,2} 仍然返回 true,尽管显然不是。这是我使用 {1,3,1,1,2} 数组的输出:

[1, 3, 1, 1, 2]
[2, 1, 1, 3, 1]
Successful!

所以,它似乎正确地反转了列表,但是当它比较它们时,它假设它们是相等的?我相信 tmp == c 以及它如何检查它们是否相等存在问题。我认为它只是检查它是否包含相同的元素,但我不确定。我也尝试了 tmp.equals(c),但它返回了相同的结果。我只是好奇是否还有另一种方法可以使用,或者我是否必须编写一个方法来比较 tmp 和 c?

提前谢谢您!汤米

最佳答案

在您的代码中,ctmp 是指向同一集合和 tmp == c 的链接。将永远是真的。您必须将集合克隆到新实例,例如:List<E> tmp = new ArrayList(c); .

关于java - isPalindrome - 集合和列表反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39728823/

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