我想在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
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函数中.
| 归档时间: |
|
| 查看次数: |
834 次 |
| 最近记录: |