java获取枚举中最长的字符串

Mar*_*hin 3 java enums

我想在Java Enum中找到最长的String.做这个的最好方式是什么?我没有和Enums一起工作,所以任何建议都是受欢迎的.这些是我的枚举

 public enum DOMAIN_LANGUAGES {
    ENG, SWE;

    public static List<DOMAIN_LANGUAGES> getDomainLanguages(){
        List<DOMAIN_LANGUAGES> languages = new ArrayList<DOMAIN_LANGUAGES>();
        languages.add(ENG);
        languages.add(SWE);
        return languages;
    }
}

public enum DOMAIN_STATE {
    LIVE,
    PENDING_RENEWAL,
    PENDING_TRANSFER_OUT,
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我没有很好地定义这个问题,因此我编辑它.我从我的两个枚举中得到的是一个函数,它接受我定义的两种枚举中的任何一种,并找到最长的文字.所以在DOMAIN_STATE中将是"PENDING_TRANSFER_OUT".我希望这会让事情变得容易理解.

编辑2

所以现在我得到了很棒的帮助,但我不确定为什么这段代码不起作用.当我尝试使用enumList.values()时,它会抱怨?这就是我无法找到解决方案的原因,我缺少什么?=)

    public String CalculateDropdownListWidth(Enum enumList){
        int chars = 0;
        for(Enum e : enumList.values()){
            //do stuff
        }
}
Run Code Online (Sandbox Code Playgroud)

最后:

所以现在我知道为什么这不起作用.我喜欢循环EnumSet而不是Enum.如果我没有完全被误解,那么Enum只是"集合"中的一个.所以这是我的解决方案.谢谢大家的帮忙!

public String CalculateDropdownListWidth(EnumSet enumList){
    int chars = 0;
    for(Object e : enumList){
        if(e.toString().length() > chars){
            chars = e.toString().length();
        }
    }

    //Pixelmodifier
    Double oneChar = 1.35;

    Double result = oneChar * chars;

    return String.valueOf(result) + "px";
}
Run Code Online (Sandbox Code Playgroud)

感谢任何帮助!

/ Marthin

Ral*_*lph 5

 String longestYet= "";
 for (Enum<?> value :OfferType.values()){
     if (longestYet.length()< value.name().length()) {
        longestYet= value.name();   
     }                
 }
 longest = longestYet;
Run Code Online (Sandbox Code Playgroud)

如果您经常为特定枚举需要此值,则可以将其添加到枚举itselve中,并在静态初始化器中设置该值.

public static enum MyType {

    NORMAL,
    OTHER;

   public static final String longest; 
   static{
        String longestYet= "";
        for (Enum<?> value :MyType.values()){
           if (longestYet.length()< value.name().length()) {
            longestYet= value.name();   
           }                
        }
        longest = longestYet;
    }        
}
Run Code Online (Sandbox Code Playgroud)

或者甚至更好,将静态初始化方法放在一个可以在几个枚举中重用的Util函数中.

  • 然而,在问题中很清楚,想要的是枚举文字还是它的长度. (2认同)