将<keyword>设置为String [] </keyword>

时间:2013-06-18 13:06:19

标签: java

我有一个对象Keyword,它存储一个String,其中包含关键字的文本和一组o关键字(Set<Keyword>),我需要将其转换为String数组。有没有快速/简单的方法来执行此操作,或者我需要迭代集合并逐个添加每个关键字?

修改

对于那些要求关键字类的人:

@Entity
public class Keyword {

    // ...

    @Basic
    private String value;

    // ...

    // Getters & Setters

}

5 个答案:

答案 0 :(得分:3)

试试这个:

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

<击>

如果你有一个Set<Object>

......就是我所说的。


不,由于Set<Keyword>String[]之间没有直接关系,因此无法将Keyword直接转换为String。你将不得不迭代集:

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

答案 1 :(得分:3)

实现Collection intefrace(包括Set)的每个类都有toArray()方法:

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

如果是使用其他类型参数化的集合,例如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();
}

答案 2 :(得分:3)

如果您使用Guava,则可以使用:

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

这只是划伤了番石榴实际可以做的事情。

答案 3 :(得分:1)

没有具体的方法可以做到这一点。您可以使用set.toArray将Set转换为Object [],然后遍历数组 要么 直接迭代集合

答案 4 :(得分:1)

您可能需要在关键字类中添加toString()方法,如下所示。或者您可以使用单独的变换器类/方法。

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);