Java8 list <t>列出<object []> </object []> </t>

时间:2015-02-17 12:00:40

标签: java list java-8 java-stream

如何使用流解析Generic到Object []? 我有

private static <T> List<Object[]> selectData(List<T> a,
    Predicate<T> predicate) {
    ArrayList<Object[]> tmp = new ArrayList<Object[]>();
    for (T x : a) {
      if (predicate.test(x)) {
        tmp.add(new Object[] { x });
      }
    }   
return tmp;
}

但我想做的事情如下:

...//    
return a.stream().filter(predicate).collect(Collectors.toList());

但我不知道如何将每个元素转换为Object []

1 个答案:

答案 0 :(得分:5)

您只需使用map功能即可:

return a.stream()
    .filter(predicate)
    .map(o -> new Object[] { (Object) o })
    .collect(Collectors.toList());

map将流的每个元素“映射”到给定函数的结果,以便在该调用之后,流中的所有元素都是映射函数返回的类型(在本例中为{ {1}})。