你能从循环中打破开关盒吗?

问题描述 投票:0回答:1

我有一个不想包含重复项的对象列表。由于创建对象的成本很高,因此我不想使用集合,因为这需要先创建一个对象,然后再确定它是否已存在于集合中。相反,我想检查列表是否已包含由我当前正在处理的相同原始数据制成的对象。我还决定使用 switch 语句创建哪个特定对象。所以我写了以下代码:

List<ExpensiveObject> objects = new ArrayList<>();
List<PrimitiveData> input = readInput();

for(int data : input) {
    switch(data.Condition) {

        case Condition.FIRST:
            for(ExpensiveObject object : objects) {
                if(data.isAlreadyPresent(object))
                    break;
            }

            objects.add(new ExpensiveObject(data));
            break;
    
        case Condition.SECOND:
            // Some other code...
            break;
    
        // More Cases...
    
        default:
            break;
    }
}

当然,如果条件为真,则破坏的是 for 循环,而不是 switch 语句。我知道我可以通过引入布尔变量轻松解决这个问题,但我仍然想知道是否有办法以这种方式打破 switch case。

java switch-statement
1个回答
0
投票

您可以使用标签。

for(int i = 0; i<10; i++){
    for(int j = 0; j<10; j++){
        if(i<3 && j==5){
            break;
        }
        if(j == 6){
            break myloop;
        }
        System.out.println(i + ", " + j );
    }
}```

When you run that, the break myloop ends the outter loop.

    outterLoop:
    for(int data : input) {


    ....
    break outterLoop; //will end the outter loop.
© www.soinside.com 2019 - 2024. All rights reserved.