相关疑难解决方法(0)

Java 8并行流+ anyMatch - 一旦发现匹配,线程是否会被中断?

如果我在java 8中有并行流,并且我使用anyMatch终止,并且我的集合有一个与谓词匹配的元素,我试图弄清楚当一个线程处理这个元素时会发生什么.

我知道anyMatch是短路的,因此我不希望在处理匹配元素后处理更多元素.我的困惑是关于其他线程发生了什么,可能是在处理元素的中间.我可以想到3个看似合理的场景:a)他们被打断了吗?b)他们是否继续处理他们正在处理的元素,然后,一旦所有线程都无所事事,我得到我的结果?c)我是否得到了我的结果,但是处理其他元素的线程继续处理这些元素(但是一旦完成就不再采用其他元素)?

我有一个长期运行的谓词,一旦我知道一个元素匹配就很快终止它.我担心一点,因为我在文档中找不到它可能是依赖于实现的东西的信息,这也是很好的.

谢谢

java-8

14
推荐指数
1
解决办法
2301
查看次数

检测带有Java Optional的Hashmap是否具有空值?

我想知道HashMap它的所有值是否为空.除了必须检查地图中每个条目的值之外,最好的方法是什么?

HashMap<Long, Optional<Long>> aMap = new HashMap<>();

aMap.put(new Long(55), Optional.empty());
aMap.put(new Long(66), Optional.empty());
aMap.put(new Long(77), Optional.empty());
aMap.put(new Long(99), Optional.empty());
Run Code Online (Sandbox Code Playgroud)

java hashmap optional java-8

4
推荐指数
1
解决办法
754
查看次数

Java 11 Lambda - 检查每个对象,满足第一个条件时返回 true,否则返回 false

我有一个方法,效果很好。这就是它的样子。

private boolean roomWithMoreThanTenFurnitures(Building building) {
if (building != null && building.hasRooms()) {
    for (Room room : building.getRooms()) {
        if (room.getFurnitures.size() > 10) {
            return true;
        }
    }   
}
return false;
}
Run Code Online (Sandbox Code Playgroud)

我想把它切换到 Lambda。uo 是用 shell 进来的,但是我不知道外面如何填写 if(条件) return true 或 return false。

building.getRooms().forEach(room -> {
//??
});
Run Code Online (Sandbox Code Playgroud)

java lambda java-11

0
推荐指数
1
解决办法
2449
查看次数

标签 统计

java ×2

java-8 ×2

hashmap ×1

java-11 ×1

lambda ×1

optional ×1