我有一个这个清单:
public List <Book> bookList = new ArrayList <>();
您可以在Book对象引用上使用.title获取Book对象的标题(这是一个CharSequence)。
我想要做的是声明一个方法,该方法将List of Books作为输入参数并返回包含书签的CharSequence []。 bookList按照albhabeticaly进行排序,如果可能,我想保留它。
编辑:标题也是CharSequence。
答案 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