Java8 list <T>列出<object []>

shu*_*now 0 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;
}
Run Code Online (Sandbox Code Playgroud)

但我想做的事情如下:

...//    
return a.stream().filter(predicate).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

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

mhl*_*hlz 5

您可以简单地使用该map函数来完成:

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

map将流的每个元素"映射"到给定函数的结果,以便在该调用之后,流中的所有元素都是映射函数返回的类型(在本例中Object[]).

  • 永远不需要向上转换为Object. (4认同)
  • 每次调用`System.out.println(myCustomObject)时,你都会向上转换为Object,这只是众多例子中的一个. (4认同)