【问题标题】:How can I compare all the values of an enum with a given array in java?java - 如何将枚举的所有值与java中的给定数组进行比较?
【发布时间】:2017-12-06 05:59:10
【问题描述】:

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

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

还有一个名为 Sales 的数组,其中包含数组值:

 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;
 }

【问题讨论】:

  • 一种可能性:从销售中创建一个集合删除所有 CarBrands,检查是否剩余集合为空(并且起始集大小为 4)。另一种可能性是具有布尔值的 EnumMap,迭代销售,将当前键的布尔值设置为 true,并在循环后检查 enumMap 中是否存在 false。

标签: java arrays enums


【解决方案1】:
  • 将 carBrand 值添加到列表
  • 循环销售,从列表中删除 carBrand
  • 检查列表是否为空,如果是则它们包含所有值

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

【讨论】:

    【解决方案2】:

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

    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;
    }
    

    “array”参数将在您的代码中作为sales 对象调用。

    如果不是每个枚举值都存在于您的数组中,此代码将返回 false。

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

    【讨论】:

      【解决方案3】:
      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);
                  }
              }
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多