相关疑难解决方法(0)

Java 8可选asSet()

所以我现在已经使用Guava的Optional一段时间了,我转向Java 8,所以我想使用它的Optional类,但它没有我最喜欢的方法来自Guava,asSet().有没有办法用Java 8 Optional执行此操作,我没有看到.我喜欢将可选项视为一个集合,所以我可以这样做:

for( final User u : getUserOptional().asSet() ) {
   return u.isPermitted(getPermissionRequired());
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下,避免需要额外的变量.

IE

 Optional<User> optUser = getUserOptional();
 if ( optUser.isPresent() ) {
     return optUser.get().isPermitted(getPermissionRequired());
 }
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来复制Java 8的可选中的番石榴风格?

谢谢

java optional guava java-8

5
推荐指数
2
解决办法
1984
查看次数

从Optional <>转换为ArrayList <>

我有以下情况:

public ArrayList<A> getMethods(){
    return b.c.test();
}
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是b.c.test()返回一个Optional<A>返回类型的值.但我需要回归ArrayList<A>.

所以,我试图将其转换并重写为:

public ArrayList<A> getMethods(){
    return (ArrayList<A>)b.c.test();
}
Run Code Online (Sandbox Code Playgroud)

但是Eclipse说,从这样的投Optional<A>ArrayList<A>不可能的.

我怎么解决这个问题?

java casting arraylist optional

5
推荐指数
3
解决办法
2万
查看次数

使用StreamEx从Stream中删除空的Optionals

我正在寻找一种优雅的方法来Optional使用StreamEx库仅传输非空条目.或者标准库,如果可能的话.

目前我正在使用以下相当冗长的方法:

List<Optional<String>> list = 
   Arrays.asList(Optional.of("A"), Optional.empty(), Optional.of("B"));

List<String> nonEmpty = 
   StreamEx.of(list).filter(Optional::isPresent).map(Optional::get).toList();
Run Code Online (Sandbox Code Playgroud)

我基本上是在寻找像StreamEx这样的nonNull方法,但对于Optional.

java java-8 java-stream streamex

3
推荐指数
1
解决办法
174
查看次数

如何处理java流api中的可选对象?

我在做简单的测试。

@Test
    public void whenFilterEmployees_thenGetFilteredEmployees(){
        Integer[] empIds = {1,2,3};
        List<Optional<Employee>> employees = Stream.of(empIds)
                .map(employeeRepository::findById)
                .collect(Collectors.toList());

        List<Employee> employeeList = employees
                .stream().filter(Optional::isPresent)
                .map(Optional::get)
                .filter(e->e !=null)
                .filter(e->e.getSalary()>200000)
                .collect(Collectors.toList());

        assertEquals(Arrays.asList(arrayOfEmps[2]), employeeList);


    }
Run Code Online (Sandbox Code Playgroud)

我的员工表包含数据:

1   Jeff Bezos  100000
2   Bill Gates  200000
3   Mark Zuckerberg 300000
Run Code Online (Sandbox Code Playgroud)

当前测试成功运行。

如您所见,我准备了两个员工列表,即员工和员工列表

我这样做是因为findById方法返回 Optional。我如何使用流 api 以便我可以简单地获取员工列表

List<Employee> employeeList= ....
Run Code Online (Sandbox Code Playgroud)

java java-stream

2
推荐指数
1
解决办法
2659
查看次数

标签 统计

java ×4

java-8 ×2

java-stream ×2

optional ×2

arraylist ×1

casting ×1

guava ×1

streamex ×1