gpt4 book ai didi

Java ArrayList问题(涉及valueOf())

转载 作者:行者123 更新时间:2023-12-02 00:47:31 25 4
gpt4 key购买 nike

所以我有这个函数,combinations,它将字符串的所有排列添加到数组列表中。

 public static void combinations(String prefix, String s, ArrayList PermAttr) {
if (s.length() > 0) {
PermAttr.add(prefix + s.valueOf(s.charAt(0)));
combinations(prefix + s.valueOf(s.charAt(0)), s.substring(1), PermAttr);
combinations(prefix, s.substring(1), PermAttr);
}
}

现在,我有这个 arrayList tryCK,我们可以说它是 {"A","B"}。

我有另一个 arrayList CK,它也是 {"A","B"},但它是从上面的组合函数派生的。

当我执行 tryCK.equals(CK) 时,它返回 true。

但是当我将它放入 tryCK 和 CK 上的另一个函数时,对于 tryCK 它返回 true,而 CK 它返回 false,即使它们是完全相同的列表。

所以,我的问题是,使用 .valueOf(s.charAt()) 是否会更改某些内部类型?

这非常难以解释,但我不想发布完整的代码。

最佳答案

首先,您甚至不需要使用 valueOf,因为大多数情况下,Java 都可以很好地将字符连接到字符串末尾。

 PermAttr.add(prefix + s.charAt(0));

第二,如果要使用 valueOf,至少从 String 类中引用它,而不是 String 对象的实例...

PermAttr.add(prefix + String.valueOf(s.charAt(0)));

第三,更好的命名约定会有所帮助:

permAttr.add(prefix + s.valueOf(s.charAt(0)));

第四,有很多方法可以检查 ArrayList 的内容,尝试确保它们实际上包含相同的值,而不是假设它们包含相同的值:

for(String s : CK)
System.out.println(s);

第五,您总结为“那么,我的问题是,使用 .valueOf(s.charAt()) 是否会更改某些内部类型?”答案是:

valueOf(s.charAt(int)) 将返回一个 String 对象。如果您没有预料到一个字符串,那么是的,这会更改对象的类型。该字符串通常与所有其他字符串(例如您将其连接的字符串)一起使用,并且应该执行字符串可以执行的任何操作。因此,如果您期望的是 String 类型,那么不会,它不会更改任何类型。

第六,确保您是否要使用 equals() 方法比较字符串。

请勿使用:

if(s1 == s2)

这将检查引用是否在内存中相同的位置。

使用

if(s1.equals(s2))

这将检查字符串的值是否相同。

我想这就是我所拥有的一切。祝你好运!

关于Java ArrayList问题(涉及valueOf()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4535605/

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