2012-02-02 3 views
0

안녕 얘들 아 Set을 사용하는 Setter에 문자열 배열을 전달해야합니다. 그것을 넘기는 방법을 모르겠습니다. 문자열 배열을 집합에 전달해야합니다.

여기가 감사

내 형태 :

public String[] getFields() { return fields; } 
public void setFields(String[] s) 
{ 
    fields = s; 
    //System.out.println("form Array length " + s.length); 
} 

여기에 콩입니다 :

private Set<FieldBean> fields; 

    public void setFields(Collection<FieldBean> val) 
{ 
    t 
    if(fields == null) fields = new HashSet<FieldBean>(); 
    fields.addAll(val); 
} 

액션 코드 :

ParameterBean paramBean = new ParameterBean(); 
form.getFields() y 

     paramBean.setFields(Arrays.asList(form.getFields())); //Need bean set here 

진술 메시지를 받았습니다 : 메소드 setFields을 (Collection)을 인수 (List)에 적용 할 수 없습니다.

+0

는, 배열이 복제 있습니까? –

+0

[this] (http://stackoverflow.com/questions/3064423/java-easily-convert-array-to-set) 스레드를 참조하십시오. –

+0

@WebUser :'addAll'은 중복을 무시합니다. – SLaks

답변

1
new HashSet<..>(Arrays.asList(array)); 

세트를 제공합니다. 그러나 이미 addAll(..) 메소드가 있으므로 Arrays.asList(array)

Btw 인 콜렉션이 필요합니다. 일반적으로 setter는 값을 가져 와서 설정합니다. 세터 내에 이런 종류의 논리를 갖는 것이 항상 좋은 생각은 아닙니다. 그래서 당신이 그것을 간단한 세터로 만들 수 있고 내 대답의 첫 줄을 사용하는지 확인하십시오. Guava

+0

'paramBean.setFields (Arrays.asList (form.getFields()));'를 추가했습니다. GetParameterBean 타입의 메소드 setFields (Collection )가 인수 (List )에 적용되지 않습니다. –

+0

Setter에 DetParameterBean 타입 세트가 필요하다면 String을 DetParameterBean으로 변환 할 수 없습니다. DetParameterBean의 내용은 무엇입니까? – proko

+0

방금 ​​원래 게시물을 업데이트했습니다. –

0

:

myMethod(ImmutableSet.copyOf(stringArray)); 

(단순, 빠르고, 메모리를 많이 사용 HashSet에 비해 덜.) 그 세트의 요구 사항이기 때문에

관련 문제