자바 열거 형에서 가장 긴 문자열을 찾고 싶습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 나는 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,
}
편집 : 나는 아주 잘이 질문을 정의 didnt는 따라서 내가 그것을 편집
. 두 개의 enum에서 무엇을 외쳐 왔는지는 내가 정의한 두 종류의 enum 중 하나를 취해 가장 긴 리터럴을 찾는 함수입니다. 따라서 DOMAIN_STATE에서는 "PENDING_TRANSFER_OUT"이됩니다. 나는 이것이 물건을 조금 더 이해하기 쉽게 바란다. 중대하지만,이 코드가 작동하지 않습니다 이유는 확실하지 메신저했다
편집 2
그래서 지금 i'v가받은 솜 도움이됩니다. 그것은 enumList.values ()를 사용하려고하면 불평합니까? 이것은 내가 처음부터 해결책을 찾지 못했던 이유이며, 나는 무엇을 놓치고 있습니까? =)
public String CalculateDropdownListWidth(Enum enumList){
int chars = 0;
for(Enum e : enumList.values()){
//do stuff
}
}
FINAL :
그래서 지금은 왜 didnt 한 일을 knwo. 열거 형 대신 EnumSet을 루프하도록했습니다. 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";
}
도움이 필요하면 Thx!
은/Marthin
'getDomainLanguages'가 필요하지 않습니다. 값의 배열을 반환하는 모든'enum'에 대해 정의 된'values ()'메소드가 있습니다. –
문자열이 표시되지 않습니다. 두 번째 enum에서'PENDING_TRANSFER_OUT'처럼 가장 긴 enum 리터럴을 의미합니까? –
위의 예에서 문자열이없고 DOMAIN_STATE와 (과) 무슨 관계가 있습니까? 혼란 스럽습니다. –