将<object>列入CharSequence []

时间:2017-05-09 12:19:08

标签: java

我有一个这个清单:

public List <Book> bookList = new ArrayList <>();

您可以在Book对象引用上使用.title获取Book对象的标题(这是一个CharSequence)。

我想要做的是声明一个方法,该方法将List of Books作为输入参数并返回包含书签的CharSequence []。 bookList按照albhabeticaly进行排序,如果可能,我想保留它。

编辑:标题也是CharSequence。

3 个答案:

答案 0 :(得分:2)

将其用于String.valueOf()

public CharSequence[] toCharSequenceArray(List<?> objects) {
    return objects.stream().map(String::valueOf).toArray(CharSequence[]::new);
}

Book.title

public CharSequence[] toCharSequenceArray(List<Book> books) {
    return books.stream().map(b -> b.title).toArray(CharSequence[]::new);
}

后者在Java7中(使用迭代器):

CharSequence[] bookTitles = new CharSequence[books.size()];
int index = 0;
for (Book book : books) {
    bookTitles[index++] = book.title;
}
return bookTitles;

或旧式for循环:

CharSequence[] bookTitles = new CharSequence[books.size()];
for (int i = 0; i < bookTitles.length; i++) {
    bookTitles[i] = books.get(i).title;
}
return bookTitles;

答案 1 :(得分:1)

尝试:

bookList.stream().map(b -> ((CharSequence)b.title)).collect(Collectors.toList()).toArray();

或者像steffen在他的回答中所做的那样,最后使用数组收集器。一般来说,我建议使用List而不是数组。

答案 2 :(得分:0)

如果您有Book个对象的列表,则可以使用Java 8的stream流式传输元素,map每个元素到相应的标题和{{1}它到一个数组,例如:

collect