Java 我能做一下if';它短吗?

Java 我能做一下if';它短吗?,java,if-statement,Java,If Statement,是否可以缩短if语句?例如: if (intno == 0 || intno == 4 || intno == 7) 可能是这样的: if (intno == 0 || 4 || 7) 这会带来一个错误,但是有类似的错误吗?您可以根据需要生成真值映射 Set<Integer> set = new HashSet<Integer>(); map.add(0); map.add(4); map.add(7); 您可以根据需要生成真值映射 Set<Integer&g

是否可以缩短if语句?例如:

if (intno == 0 || intno == 4 || intno == 7)
可能是这样的:

if (intno == 0 || 4 || 7)

这会带来一个错误,但是有类似的错误吗?

您可以根据需要生成真值映射

Set<Integer> set = new HashSet<Integer>();
map.add(0);
map.add(4);
map.add(7);

您可以根据需要生成真值映射

Set<Integer> set = new HashSet<Integer>();
map.add(0);
map.add(4);
map.add(7);

对于整数类型和枚举,可以改用switch语句:

switch(intno) {
     case 0:
     case 4:
     case 7:
          //code here
          break;
}

这也适用于Java 7+中的字符串。对于整数类型和枚举,可以使用switch语句:

switch(intno) {
     case 0:
     case 4:
     case 7:
          //code here
          break;
}

这也适用于Java 7+

中的字符串。注释中已经建议了以下内容:

Arrays.asList(0, 4, 7).contains(intno)
它是正确的和较短的,但速度较慢

请注意,此代码在幕后执行许多操作:

  • 0
    4
    7
    int
    s转换为
    整数
    s
  • 创建包含这些对象的数组
  • 创建一个包含该数组的
    列表
  • intno
    转换为
    Integer
  • 在列表上执行线性搜索,对每个对象调用
    equals
这比三张支票慢多了。当然,如果每次用户单击一个按钮时都执行一次代码,这并不重要。如果你每秒叫它一百次,它可能会

然而,在我看来,使用这个比使用长if更清晰,特别是如果有15个有效条件而不是3个。如果您甚至不使用幻数存储返回的列表,您可能会得到一些清晰的要点:

private static final List<Integer> VALID_NUMBERS = Arrays.asList(0, 4, 7);

// ...

if (VALID_NUMBERS.contains(intno)) {
    // Code here
}
private static final List VALID_NUMBERS=Arrays.asList(0,4,7);
// ...
if(有效的_编号包含(intno)){
//代码在这里
}

它更短,也更清晰。它比较慢,所以要小心这些构造,不要每次都使用它。

评论中已经提出了以下建议:

Arrays.asList(0, 4, 7).contains(intno)
它是正确的和较短的,但速度较慢

请注意,此代码在幕后执行许多操作:

  • 0
    4
    7
    int
    s转换为
    整数
    s
  • 创建包含这些对象的数组
  • 创建一个包含该数组的
    列表
  • intno
    转换为
    Integer
  • 在列表上执行线性搜索,对每个对象调用
    equals
这比三张支票慢多了。当然,如果每次用户单击一个按钮时都执行一次代码,这并不重要。如果你每秒叫它一百次,它可能会

然而,在我看来,使用这个比使用长if更清晰,特别是如果有15个有效条件而不是3个。如果您甚至不使用幻数存储返回的列表,您可能会得到一些清晰的要点:

private static final List<Integer> VALID_NUMBERS = Arrays.asList(0, 4, 7);

// ...

if (VALID_NUMBERS.contains(intno)) {
    // Code here
}
private static final List VALID_NUMBERS=Arrays.asList(0,4,7);
// ...
if(有效的_编号包含(intno)){
//代码在这里
}


它更短,也更清晰。它比较慢,所以要小心这些构造,不要每次都使用它。

不。我很确定以前有人问过这个问题……这应该很明显。。。。。。但无论如何,
Int=0
就是它的意思你应该知道
int
是一个关键字。试着写
int int=0
你肯定会得到一个编译错误。
数组。asList(0,4,7).contains(intno)
可能是一个替代方法。否。我很确定以前有人问过这个问题……这应该很明显。。。。。。但无论如何,
Int=0int
是一个关键字。试着写
int int=0
你肯定会得到一个编译错误。
array.asList(0,4,7).contains(intno)
可能是一个替代方法。真的吗?我甚至不想买一套,而是一张完整的地图?然后,您的映射不包含其他整数的值,并且将返回
null
,而不是true或false。我将在这里使用
集。但是它也比原来的
if
慢得多。5行比1行短多少?我没有包括它,但在if语句中,我将
intno
更改为另一个数字,我如何使用map来实现这一点?if上缺少一个括号,map没有
contains
方法。真的吗?我甚至不想买一套,而是一张完整的地图?然后,您的映射不包含其他整数的值,并且将返回
null
,而不是true或false。我将在这里使用
集。但是它也比原来的
if
慢得多。5行比1行短多少?我没有包括它,但在if语句中,我将
intno
更改为另一个数字,我如何使用maps执行此操作?if上缺少一个括号,map没有
contains
方法。