如何在java中将枚举的所有值与给定数组进行比较?

时间:2017-12-06 05:59:10

标签: java arrays enums

我有一个带有值的枚举类:

  enum carBrand{BMW,HONDA,MERC,AUDI};

还有一个名为Sales with Array values的数组:

 sales[] = {CHEVVY, BMW , MERC, AUDI};

那我怎么能检查sales []是否包含enum carBrand的所有值?

我试图把它放在for循环中:

 for(int i = 0; i<sales.length;i++){
     if(carBrand.sales == sales[i]){
        return true;
     }
 return false;
 }

3 个答案:

答案 0 :(得分:0)

  • 将carBrand值添加到列表
  • 循环销售,从列表中删除carBrand
  • 检查列表是否为空,如果是,则它们具有所有值

注意:类名应该是PascalCase(CarBrand,Sales)中的名称

答案 1 :(得分:0)

我个人建议使用列表对象而不是使用它的数组,但是,这应该可行。

public static boolean checkArray(carBrand[] array) {
    for (carBrand c : carBrand.values()) {
        boolean found = false;
        for (carBrand a : array) {
            if (a == c) {
                found = true;
                break;
            }
        }
        if (!found) {
            return false;
        }
    }
    return true;
}

&#34;数组&#34;参数将作为代码中的sales对象调用。

如果数组中不存在每个枚举值,则此代码将返回false。

题外话: 像这样的东西实际上遍布互联网 - 这里,谷歌,甚至Bing(就像Bing一样),所以在请求帮助之前进行搜索,可能是一个可行的选择

答案 2 :(得分:0)

public class Enumeration {

    enum carBrand{BMW,HONDA,MERC,AUDI};

    public static void main(String[] args) {

        String sales[] = {"CHEVVY", "BMW" , "MERC", "AUDI"};


        for(carBrand brand:carBrand.values()) {
            boolean bran=false;
            for(int i=0;i<sales.length;i++) {
                if(brand.toString()==sales[i]) {
                    bran=true;
                    break;
                }
            }
            if(!bran==true) {
                System.out.println("Sales doesn't have " +brand);
            }
        }

    }
}