Lambda过滤器无法按预期工作

Bos*_*bad 3 java lambda java-8 java-stream

我在我的代码中使用这个lambda表达式:

File slika = new File(tempPath + File.separator + imena.stream().filter(x -> !x.trim().equals("null")).findFirst().get());
Run Code Online (Sandbox Code Playgroud)

它应该从发布到我的servlet的文件中获取一个名称,该名称不等于null.我检查了内容ArrayList<String> imena,发现它包含以下内容(以逗号分隔):null,null,null,Photo0098.jpg.最后一个是我发布到服务器的那个,以及应该被过滤器拾取的那个,而是我得到一个空指针异常.这段相同的代码可以在另一个处理文件上传的servlet上运行.有人能告诉我为什么我的代码在这里工作不正常,即使它在其他地方工作的条件相同吗?

Mur*_*nik 6

看起来列表中的值是实际值null,而不是内容为的字符串"null".使用方法引用Objects.nonNull是一种过滤它们的优雅方法:

File slika = 
new File(tempPath + 
         File.separator + 
         imena.stream().filter(Objects::nonNull).findFirst().get());
         // Here --------------^
Run Code Online (Sandbox Code Playgroud)