2013-06-18 92 views
1

我有一個對象關鍵字,用於存儲字符串和關鍵字文本以及一組需要轉換爲字符串數組的關鍵字集合(Set<Keyword>)。有沒有快速/簡單的方法來做到這一點,或者我需要迭代集合並逐個添加每個關鍵字?將字符串<Keyword>轉換爲字符串[]

編輯:

對於那些要求class關鍵字:

@Entity 
public class Keyword { 

    // ... 

    @Basic 
    private String value; 

    // ... 

    // Getters & Setters 

} 
+0

因此,該對象實際上是指一個字符串?對象o =「你好」? – arynaq

+0

你可以添加更多的來源?我不明白你在開場提供的描述。 – tbsalling

+0

什麼是「關鍵字」?你可以上課嗎? – Bohemian

回答

3

實現Collection intefrace(這包括Set)具有toArray()方法每類:

​​

在一組的情況下被參數化與其他類型,例如Set<Keyword>你會做這樣的事情:

Keyword[] array= set.toArray(new Keyword[0]); 
String[] stringArray= new String[array.length]; 

for (int i=0; i<array.length; i++) { 
    stringArray[i]= array[i].getThatString(); 
} 
+0

該操作提到了一個'Set '而不是'Set '這恰好包含了字符串。 – assylias

+1

哦,我讀了標題... – darijan

+0

是的,標題不正確。對不起。並感謝你的答案。這正是我的想法。 –

3

試試這個:

String[] arr = set.toArray(new String[set.size()]); 

...是那麼我有什麼說,如果你有一個Set<Object>


沒有,沒有辦法直接在Set<Keyword>轉換爲String[]因爲有KeywordString之間沒有直接的關係。你將不得不遍歷集合:

String[] arr = new String[set.size()]; 
int i = 0; 
for (Keyword word : set) 
    arr[i++] = word.toString(); 
+0

這是一個'設置',而不是'設置'... – assylias

+1

@assylias糟糕,我認爲這是一個'集'。 – arshajii

+0

這就是我的想法。謝謝你的答案。 –

1

沒有做到這一點的具體方式。您可以設置轉換使用set.toArray爲Object [],然後遍歷數組 或 遍歷集合直接

3

如果使用Guava,你可以使用這個在:

Lists.transform(Lists.newArrayList(theSet), Functions.usingToString()) 
    .toArray(new String[theSet.size()]) 

這只是刮傷了番石榴實際上可以做的表面。

+0

upvote,OP應該給番石榴一試,它有很多好東西。 –

+0

不幸的是,我沒有使用番石榴,但我會考慮未來的項目(也許這是一個)。感謝您的回答。 –

+1

@DavidMorenoGarcía(個人意見,心靈)你應該嚴格考慮使用它。正如我在評論中提到的那樣,它只能做一件事。請參閱[這裏](http://docs.guava-libraries.googlecode.com/git/javadoc/index.html)瞭解完整的API。請注意,它具有_real_不可變集合,_real_ IP地址驗證等等。真。 – fge

1

您可能需要將toString()方法添加到您的Keyword類中,如下所示。或者你可以使用一個單獨的變壓器類/方法。

class Keyword { 
    private String value; 

    Keyword(String v) { 
     this.value = v; 
    } 

    public String toString() { 
     return value; 
    } 
} 

我會說迭代設置並逐個添加每個關鍵字是您的最佳策略。

System.out.println(toStringArray(set)); 

private static String[] toStringArray(Collection<?> set) { 
    String[] arr = null; 
    if (set != null) { 
     arr = new String[set.size()]; 
     int i = 0; 
     for (Object o : set) { 
      arr[i++] = o.toString(); 
     } 
    } 
    return arr; 
} 

但是,如果您真的想要,您可以有一個骯髒的解決方法如下所示。這裏唯一的問題是,您的關鍵字值不能包含逗號(,),因爲它被split()方法使用。

String str = set.toString(); 
str = str.substring(1, str.length() - 1); 
String[] asStringArray = str.split(","); 
System.out.println(asStringArray);