Java 需要 IF 语句吗?
Java IF Statement necessary?
我有:
String str = "Hello, how, are, you";
我想创建一个从任何字符串中删除逗号的辅助方法。 下面哪个更准确?
private static String removeComma(String str){
if(str.contains(",")){
str = str.replaceAll(",","");
}
return str;
}
或
private static String removeComma(String str){
str = str.replaceAll(",","");
return str;
}
似乎我不需要 IF 语句,但在某些情况下我可能需要。
如果有更好的方法让我知道。
两者在功能上是等价的,但前者更冗长并且可能会更慢,因为它运行了一个额外的操作。
另请注意,您不需要 replaceAll
(接受正则表达式):replace
即可。
所以我会选择:
private static String removeComma(String str){
return str.replace(",", "");
}
IF 语句是不必要的,除非您正在处理 "large" 字符串(我们说的是兆字节或更多)。
如果您使用 IF 语句,您的代码将首先搜索第一次出现的逗号,然后执行替换。如果逗号靠近字符串的末尾并且您的字符串很大,这可能会很昂贵,因为它必须被遍历两次。
如果没有 IF 语句,逗号将被替换(如果存在)。如果答案是否定的,您的字符串将保持不变。
底规则:使用没有 IF 语句的版本。
两者都正确,但第二个更清晰,因为不需要第一个备选方案的 IF 语句。
问题在于在你的字符串世界中,有多少个字符串带有逗号。
如果你有很大的概率,不先检查就调用方法replaceAll。
但是如果你没有使用非常大的字符串,我想你会发现性能没有任何差异。
只是另一个时间复杂度为 O(n) 的解决方案,space 复杂度为 O(n):
public static String removeComma(String str){
int length = str.length();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
char c = str.charAt(i);
if (c != ',') {
sb.append(c);
}
}
return sb.toString();
}
我有:
String str = "Hello, how, are, you";
我想创建一个从任何字符串中删除逗号的辅助方法。 下面哪个更准确?
private static String removeComma(String str){
if(str.contains(",")){
str = str.replaceAll(",","");
}
return str;
}
或
private static String removeComma(String str){
str = str.replaceAll(",","");
return str;
}
似乎我不需要 IF 语句,但在某些情况下我可能需要。 如果有更好的方法让我知道。
两者在功能上是等价的,但前者更冗长并且可能会更慢,因为它运行了一个额外的操作。
另请注意,您不需要 replaceAll
(接受正则表达式):replace
即可。
所以我会选择:
private static String removeComma(String str){
return str.replace(",", "");
}
IF 语句是不必要的,除非您正在处理 "large" 字符串(我们说的是兆字节或更多)。
如果您使用 IF 语句,您的代码将首先搜索第一次出现的逗号,然后执行替换。如果逗号靠近字符串的末尾并且您的字符串很大,这可能会很昂贵,因为它必须被遍历两次。
如果没有 IF 语句,逗号将被替换(如果存在)。如果答案是否定的,您的字符串将保持不变。
底规则:使用没有 IF 语句的版本。
两者都正确,但第二个更清晰,因为不需要第一个备选方案的 IF 语句。
问题在于在你的字符串世界中,有多少个字符串带有逗号。
如果你有很大的概率,不先检查就调用方法replaceAll。 但是如果你没有使用非常大的字符串,我想你会发现性能没有任何差异。
只是另一个时间复杂度为 O(n) 的解决方案,space 复杂度为 O(n):
public static String removeComma(String str){
int length = str.length();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
char c = str.charAt(i);
if (c != ',') {
sb.append(c);
}
}
return sb.toString();
}